我已经针对 CRM 2013 编写了一个自定义工作流活动。您不需要了解它的作用。我遇到的问题是,尽管实例化了ITracingService
,我使用生成的任何跟踪内容Trace(...)
方法在运行时被混淆仅适用于实时工作流程。换句话说,如果我异步运行工作流程并(故意)抛出异常,我可以在相应的系统作业记录中看到跟踪日志。如果我只是将工作流程切换为“实时”(同步),那么我仍然会遇到异常,并且仍然会得到任何自定义例外文字,但当然没有对应的systemjob
为实时工作流程生成,因此,就像插件一样,我在发生异常时显示的可下载日志文件中查找跟踪输出。在这种情况下,我的跟踪不可见,但我从(可能)托管工作流的父上下文中获取了似乎是 Microsoft 的跟踪日志 - 您可以看到它引用了我的工作流过程定义中的步骤:
[Microsoft.Crm.ObjectModel: Microsoft.Crm.Extensibility.InternalOperationPlugin]
[46f6cf4c-14ae-4f1e-98a1-eae99a37e95c: ExecuteWorkflow]
Starting sync workflow 'MyTestWorkflow', Id: ca8782b1-7ca4-e311-a055-6c3be5be5f78
Entering CreateStep1_step:
Entering CustomActivityStep2_step:
Sync workflow '__Test' terminated with error 'Unexpected exception from plug-in (Execute): My.Test.WF.DoSomething: System.NullReferenceException: Object reference not set to an instance of an object.'
在我的集会上My.Test.WF.DoSomething
我在调用时访问跟踪服务并立即开始通过Trace()
方法,例如
_trace.Trace("Starting Greg's custom code...");
这只是一个示例,但要点是,我的跟踪在异步时有效,但在同步时“丢失”。
有任何想法吗?
相应工作流设计器表单上的流程会话部分包含完整的异常消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)