我已经用WCF实现了一个到erp系统的接口。界面几乎在任何时候都工作得很好。在erp系统中每2-3个漏洞就会发生一次死锁,然后当我试图读取答案时就会得到一个System.ServiceModel.MessageHeaderException。不知何故,我从erp系统中得到了一条成功和一条失败的消息,但我看不懂这个消息。我现在还没有为wcf启用日志记录。
如何防止此错误?是否可以解释具有多个标头的消息?
完全错误:
System.ServiceModel.MessageHeaderException: Multiple headers with name 'Action' and namespace 'http://www.w3.org/2005/08/addressing' found.发布于 2018-03-27 02:53:53
我在aif服务上工作时也遇到了同样的错误,aif服务基本上基于dotnet wcf服务。我的服务操作返回一种类型的列表DataContract,该类型本身具有一个列表DataContract作为DataMember。
代码中存在导致响应头损坏的问题

下面是完整的元数据
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* <HMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContractHMPackageItemDefaultsContract: Dynamics.Ax.Application.HMPackageItemDefaultsContract>}
*/项目没有用逗号(,)分隔。由于代码故障
contract = new HMPackageItemDefaultsContract();
switch (line.HMProductType)
{
case HMInventType::Laboratory:
hmLaboratoryDefault = HMLaboratoryDefault::findByPackageDefinitionLine(line);
while select hmLaboratoryDefault
{
contract.parmCollectionDate(hmLaboratoryDefault.CollectionDate);
contract.parmInstructionstoPatient(hmLaboratoryDefault.Instructions);
contract.parmNotestoPharmacy(hmLaboratoryDefault.Notes);
contract.parmSpecimenSource(hmLaboratoryDefault.HMSpecimenSource);
list.addEnd(contract);
}
break;没有在每次迭代中实例化协定以将其添加到列表中。
在编译,清理XPPIL和做完全文后,我花了3个小时才弄明白。
我刚刚发现了另一个失败的场景,当你让DataMemberberContract返回枚举类型,其中包含一组固定的项目及其相应的整数值,而你返回的是一个超出界限的枚举整数值。
WCF没有给出任何特定于实际错误的错误消息,它只是失败了,并显示以下消息
Multiple headers with name 'Action' and namespace 'http://www.w3.org/2005/08/addressing' found.希望它能帮助那些遇到这种隐蔽异常的人。
https://stackoverflow.com/questions/41055627
复制相似问题