为什么system.exception在发送消息形状中不可序列化?

时间:2016-03-24 01:59:16

标签: c# serialization exception-handling biztalk biztalk-2010

我正在测试BizTalk 2010业务流程的异常处理。业务流程有一个范围形状,其上附有一个捕获形状。 范围形状的交易类型设置为“无”'所以我可以使用.NET异常。 catch内部是一个带有消息赋值形状的构造消息形状。消息分配形状使用接收形状中的活动消息类型。

当业务流程运行时,它会挂起发送消息的形状。错误是:

  

在Assembly System.Xml中键入System.Xml.XmlDocument,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = xxx未标记为可序列化。

我的项目设置为出于测试目的,我可以处理传入的BizTalk消息或XML文件(通过测试编辑器)。 我可以将提交给接收形状的XML保存为XML文件并处理XML文件。

我有意测试异常处理 编码将失败的数据库插入。将完整数据库错误写入日志文件,并抛出一个新异常,并显示如下消息: 无法处理BLAH请求完成 - 消息处理器 - 图像ID:ABC注意ID:XYZ。运行XML文件时,应用程序抛出错误 在预期的位置,错误会在测试编辑器中被捕获。我能够在测试编辑器功能中序列化错误消息。

但是,从BizTalk运行时我收到错误。已使用以下属性定义了相关集: BTS.ReceivePortName,ErrorReport.ErrorType,ErrorReport.InboundTransportLocation。
赋值形状中的代码如下。

msgFail = InputMsg;
msgFail(ErrorReport.ErrorType) = "FailedMessage";
msgFail(ErrorReport.Description) = ex.Message;
msgFail(ErrorReport.FailureCategory) = 0;
msgFail(ErrorReport.FailureCode) = "";
msgFail(ErrorReport.InboundTransportLocation) = InputMsg(BTS.InboundTransportLocation);
msgFail(ErrorReport.RoutingFailureReportID) = System.Convert.ToString(System.Guid.NewGuid());

msgFail是我要发送的邮件。

InputMsg是初始接收形状的活动消息类型。它是一个多部分消息类型,与验证的模式绑定。

ex是catch形状中的exception object名称。它的类型为System.Exception。

我已经阅读了很多关于如何设置范围属性和捕获形状以便能够使用异常对象的帖子,但它仍然无法正常工作。
我正在假设,因为我可以在从XML文件运行时序列化错误消息,我的问题在于我的业务流程如何获得异常。

1 个答案:

答案 0 :(得分:0)

如果安装了ESB Toolkit,则可以使用它来创建故障消息。

e.g

eSBFault = Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.CreateFaultMessage();
eSBFault.FailureCategory= "General System Exception";
eSBFault.FaultCode = "500";
eSBFault.FaultDescription = orchestrationName + ": " + ex.Message;
eSBFault.FaultSeverity = Microsoft.Practices.ESB.ExceptionHandling.FaultSeverity.Error;
eSBFault.Scope = "Scope Name";   
Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage(eSBFault, InputMsg);

注1:orchestrationName是先前在Orchestration

中设置的变量
orchestrationName = Microsoft.XLANGs.Core.Service.RootService.Name;

注意2:在此示例中,您的msgFail是eSBFault,但您也可以将其称为msgFail。它是消息类型Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults.FaultMessage