2009年1月17日 星期六

Step-By-Step教學(20):在流程中呼叫其它流程

本教學將介紹如何設計一個MyFlow1流程專案,與一個MyFlow2流程專案,在MyFlow1流程專案中,呼叫MyFlow2流程程式!

1.建立一個WF 循序工作流程專案,MyFlow1:
2.從Toolbox將Code拉到流程設計畫面:


3.選取畫面上CodeActivity1,設ExecuteCode屬性為SayHi,進入事件處理常式
4.加入以下程式碼到事件處理常式

1 private void SayHi(object sender, EventArgs e)

2 {

3 Console.WriteLine("Hello");

4 }


5.在方案中加入一個新MyFlow2循序工作流程專案,到目前方案

6.重複3,4步驟,但步驟四個程式改為

1 private void SayHi(object sender, EventArgs e)

2 {

3 Console.WriteLine("World");

4 }


7.從Sloution Explorer,MyFlow1專案,按鼠右鍵,選加入參考,從專案頁,選取MyFlow2,參考MyFlow2專案
8.Build Solution
9.在MyFlow1設計畫面中,從Toolbox將InvokeWorkFlow拉到流程設計畫面CodeActivity1下
10.設定invokeWorkFlowActivity1的TargetWorkFlow屬性,選取MyFlow2.Workflow1
12.畫面看起來為:
13.在方案中加入一個新MyConHost主控台應用程式專案到目前方案,當作裝載主程式
14.在MyConHost專案加入參考
15.在MyConHost專案加入MyFlow1參考
16.在MyConHost專案加入以下組件參考
17.在MyConHost專案Program.cs加入以下程式碼,啟動MyFlow1.Workflow1流程

1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Text;

5 using System.Threading;

6 using System.Workflow.Runtime;

7 namespace MyConHost

8 {

9 class Program

10 {

11 private static AutoResetEvent waitHandle = new AutoResetEvent(false);

12 static WorkflowRuntime rt = null;

13 static WorkflowInstance inst = null;

14 static void Main(string[] args)

15 {

16 rt = new WorkflowRuntime();

17 rt.StartRuntime();

18 rt.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(rt_WorkflowCompleted);

19 rt.WorkflowTerminated += new EventHandler<WorkflowTerminatedEventArgs>(rt_WorkflowTerminated);

20 inst = rt.CreateWorkflow(typeof(MyFlow1.Workflow1));

21 inst.Start();

22 waitHandle.WaitOne();

23 }

24 static void rt_WorkflowTerminated(object sender, WorkflowTerminatedEventArgs e)

25 {

26 Console.WriteLine("WorkflowTerminated" + e.Exception.Message);

27 waitHandle.Set();

28 }

29 static void rt_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)

30 {

31 Console.WriteLine("WorkflowCompleted");

32 waitHandle.Set();

33 }

34 }

35 }


18執行結果:


下載程式

2009年1月5日 星期一

WF的WorkflowMonitor工具

WF提供一個WorkflowMonitor工具,可以使用圖型介面來監控流程運作,要使用時可以從微軟網站下載.不過若使用Visual Studio 2008開啟C#版專案,將無法順利編譯,以下是修訂完可順利編譯的版本:

2008年12月30日 星期二

手動安裝.NET 2.0組態設定工具

當你的電腦直接安裝Visual Studio 2008與.NET 3.5時,可能因為沒有安裝.NET Framework 2.0 SDK,因此無法使用 安裝.NET 2.0組態設定工具(Microsoft .NET Framework 2.0 Configuration Tool)來設定應用程式組態或CAS權限,您可以加裝.NET Framework SDK 2.0來解決這個問題,或者使用以下解決方案 (以下解決方案參考這個網誌)

1.複製.NET Framework 2.0 SDK 中以下檔案到硬碟以下目錄 C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin

mscorcfg.dll
mscorcfg.msc
mscormmc11.cfg
mscormmc.dll
reg20Conig.reg

如果找不到這些檔,可以點這 (理論上我是沒有放毒...,不放心的話請勿下載)




2.將mscorcfg.dll註冊到GAC,使用Visual Studio 命令提示字元執行:

gacutil -i mscorcfg.dll

3.複製本文====行之後內容存成reg20Conig.reg檔案(從Windows Registry Editor Version 5.00這行開始,本文的rar檔內含此檔),若dll所在目錄不同,先修改其中的檔案目錄,在檔案總管雙擊reg20Conig.reg註冊系統登錄 !

4.使用命令提示字元執行mmc開啟嵌入式管理單元->File->Add Remove/Snap-in -> Add ->.NET Framework 2.0 Configuration->OK



====================================

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}]
[-HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}]

[HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}]
@="Microsoft.CLRAdmin.CData"

[HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]
@=""

[HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}\InprocServer32]
@="C:\\Program Files\\Microsoft Visual Studio 9.0\\SDK\\v3.5\\Bin\\mscormmc.dll"
"ThreadingModel"="Both"
"Class"="Microsoft.CLRAdmin.CData"
"Assembly"="mscorcfg, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"RuntimeVersion"="v2.0.50727"

[HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}\InprocServer32\2.0.0.0]
"Class"="Microsoft.CLRAdmin.CData"
"Assembly"="mscorcfg, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"RuntimeVersion"="v2.0.50727"

[HKEY_CLASSES_ROOT\CLSID\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}\ProgId]
@="Microsoft.CLRAdmin.CData"

[HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}]
@="Microsoft.CLRAdmin.CAbout"

[HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]
@=""

[HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}\InprocServer32]
@="C:\\Program Files\\Microsoft Visual Studio 9.0\\SDK\\v3.5\\Bin\\mscormmc.dll"
"ThreadingModel"="Both"
"Class"="Microsoft.CLRAdmin.CAbout"
"Assembly"="mscorcfg, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"RuntimeVersion"="v2.0.50727"

[HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}\InprocServer32\2.0.0.0]
"Class"="Microsoft.CLRAdmin.CAbout"
"Assembly"="mscorcfg, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"RuntimeVersion"="v2.0.50727"

[HKEY_CLASSES_ROOT\CLSID\{D8FE614D-4851-4a72-998D-D1F2E750A050}\ProgId]
@="Microsoft.CLRAdmin.CAbout"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}]
"About"="{D8FE614D-4851-4a72-998D-D1F2E750A050}"
"NameString"=".NET Framework 2.0 Configuration"
"NameStringIndirect"="@C:\\Program Files\\Microsoft Visual Studio 9.0\\SDK\\v3.5\\Bin\\mscormmc.dll,-30"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{A22B5BA1-D8CF-4db6-BC91-CFC1A04E2469}\StandAlone]
@=""

2008年12月16日 星期二

Step-By-Step教學(19):套用Forms驗證模組到任何類型的檔案

IIS 7的整合式模式可以將ASP.NET模組套用到任何任何內容包含ASP.NET網頁、靜態檔案、ASP、PHP程式。過去要提供這些伺服器等級的服務都需要使用C++撰寫.
舉例來說,若你從IE 輸入 http://localhost/iisstart.htm,你會看到網頁呈現如下

以下說明套用Forms驗證模組到任何類型的檔案,並且將Forms驗證從Web應用層式提升到伺服器層級的步驟,當你試圖存取htm類型的網頁,需先通過Forms驗證:

1) 在inetpub\wwwroot下建立一個login.aspx網頁,包含:

2)login按鈕的Click事件處理常式,要由帳號一定要是ucom,密碼為vivid
3) 加入以下Web.config檔到inetpub\wwwroot下

4)從IE 輸入 http://localhost/iisstart.htm,你會看到網頁呈現如下,要求先登入
5)加入以下test.asp檔到inetpub\wwwroot下,同樣地從IE 輸入 http://localhost/iisstart.htm,你會看網站要求先登入

2008年12月15日 星期一

移植ASP.NET 2.0應用程式到IIS 7

大部分的ASP.NET 2.0應用程式都可以順利部署到IIS 7,以整合式模型中運作,不過有些情況需要修改一些組態設定,才能讓某些功能正常。這是因為在整合模式中IIS 7 接管了某些ASP.NET組態,以便讓整合式模型能正常運作。例如自行設計Module後,通常會在組態檔案設定:

但在IIS上執行時,會發生以下500號錯誤:

您可以使用以下兩個方式解決
(1)執行appcmd.exe執行以下指令移植 ASP.NET應用程式到整合模式(假設Web應用程式名稱為testM):
檢視IIS 7管理工具,自訂的CopyRightModule已註冊成功
(2)在ASP.NET應用程式組態檔案中,改用以下方式組態自訂的Module (如果執行appcmd.exe會自動產生以下組態設定):

總網頁瀏覽量