[英]What can cause WF4 to complain about out-of-sequence calls improperly?
我有一個(漂亮的)簡單工作流程。 工作流的前三個動作是:
工作流中總共有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.