使用状态机工作流进行基于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搜了一下,发现也有人遇到这样的情况,解决办法:

  1. 首先确认自己工作流的当前状态能够接收该事件,
  2. 确认设置了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);
}

posted on 2007-11-30 09:17  赤脚小子  阅读(2437)  评论(4编辑  收藏  举报