我有两台BizTalk开发机器,其中一台我试图与另一台进行一致的状态。我的一个测试检查从编排接收到的SOAP错误响应的内容 - 这是设计。问题在于,据我所知,两台机器配置完全相同,并且安装有相同配置的应用程序具有相同的配置,因此可以按照编排中捕获的异常的堆栈跟踪的不同来处理错误。BizTalk业务流程错误处理在不同的机器上有所不同 - 为什么?
预期的输入故障是从配置了SOAP 1.1 Fault操作的稍后指定请求 - 响应端口接收到的。这被catch块捕获,该catch块将异常详细信息简单地序列化为另一个错误消息并将其返回给调用者。我可以看到,两台机器上的相同catch块都以相同的方式捕获故障。
基线机堆栈跟踪:
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkAsyncResult.End()
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.EndOperation(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.Microsoft.BizTalk.Adapter.Wcf.Runtime.ITwoWayAsync.EndTwoWayMethod(IAsyncResult result)
at AsyncInvokeEndEndTwoWayMethod(Object , Object[], IAsyncResult)
at System.ServiceModel.Dispatcher.AsyncMethodInvoker.InvokeEnd(Object instance, Object[]&outputs, IAsyncResult result)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeEnd(MessageRpc&rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage7(MessageRpc&rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
其他机器的堆栈跟踪:
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.EndOperation(IAsyncResult result)
at AsyncInvokeEndEndTwoWayMethod(Object , Object[], IAsyncResult)
at System.ServiceModel.Dispatcher.AsyncMethodInvoker.InvokeEnd(Object instance, Object[]&outputs, IAsyncResult result)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeEnd(MessageRpc&rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage7(MessageRpc&rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
这是行为,我注意到的唯一区别。为什么相同业务流程的两个实例处理同一个错误的方式不同?
您已验证两台计算机是否具有相同的修补程序级别? .Net和BizTalk CU尤其如此。 –