簡體   English   中英

是什么導致WF4抱怨不正確的呼叫?

[英]What can cause WF4 to complain about out-of-sequence calls improperly?

我有一個(漂亮的)簡單工作流程。 工作流的前三個動作是:

  1. GetWorkflowId(檢索工作流ID的簡單自定義步驟)
  2. InitializeCorrelation(香草)
  3. 接收Xyz

工作流中總共有9個接收。 當我在單元測試中(使用WorkflowServiceTestHost)對它們全部進行處理時,它就可以正常工作。

但是,當我嘗試從客戶端調用第一個接收入口點(Xyz)時,出現以下錯誤:

目前無法在標識符為'ffd6c56d-529f-4f42-ba81-f30c5ea9348d'的服務實例上執行操作'Xyz | { http://tempuri.org/ } IService'。 請確保以正確的順序執行操作,並確保使用中的綁定提供有序的交付保證。

我已經嘗試了各種各樣的方法來獲取有關此的更多信息,但空無一物。 我有一個SQL Server持久性數據庫,並已對其進行工作流實例檢查,但是InstancesTable始終為空。

我開始懷疑我是否遇到了WF4中的錯誤。

顯示的錯誤是虛假的並且具有誤導性。 真正的錯誤是

System.NotSupportedException:表達式活動類型'CSharpValue`1'需要進行編譯才能運行。 請確保工作流程已編譯。

啟用WF跟蹤時找到的內容(請參閱鏈接 )。 通過查看相關問題, 使用C#表達式Activity的 XAMLX工作流 在C#表達式使用引用類型時引發異常,我意識到,由於我已經覆蓋了WorkflowServiceHostFactory ,因此現在必須顯式編譯C#表達式。 這樣做可以解決問題。

結果看起來像這樣:

 public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
 {
     var result = new WorkflowServiceHostFactory().CreateServiceHost(constructorString, baseAddresses) as WorkflowServiceHost;
     WorkflowUtilities.CompileExpressions(result.Activity);
     return result;
 }

其中WorkflowUtilities是我在其中放置從其他位置粘貼的代碼以進行表達式編譯的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM