使用状态机工作流进行基于ExternalDataExchange的事件通信时,程序抛出了System.Workflow.Activities.EventDeliveryFailedException的异常:
测试方法 TestWorkflow.WorkflowManagerTest.ApplyTest 引发异常: System.Workflow.Activities.EventDeliveryFailedException: 无法为实例 ID"10000001-0000-0000-0000-000000000000"传递接口类型"GlobalBank.Workflow.CardLocalServices.ICardService"上的事件"CardManangerApproved"。 ---> System.Workflow.Runtime.QueueException: 未启用队列"Message Properties
Interface Type:GlobalBank.Workflow.CardLocalServices.ICardService
在msdn forum搜了一下,发现也有人遇到这样的情况,解决办法:
-
首先确认自己工作流的当前状态能够接收该事件,
-
确认设置了ExternalDataEventArgs(或者自定义的继承于ExternalDataEventArgs的负载参数)的EnqueueOnIdle(在beta2中为WaitForIdle)标志位为true。
public void RaiseCardManangerApprovedEvent(Guid instanceId, CardTypes cardType)
{
CardEventArgs arg = new CardEventArgs(instanceId, cardType);
arg.WaitForIdle = true;
if (CardManangerApproved != null)
CardManangerApproved(null, arg);
}