WCF自定义WSDL XmlSerializeRopection行为
我有一些代码可以动态构建自定义WCF wsdl。在一个特定场景中,导出的WSDL应该使用XmlSerializeRopeOptionBehavior作为IWsdlExportExtension,而不是默认的DataContractSerializeRopeOptionBehavior IWsdlExportExtension 但是,每次从WSDL生成代码中尝试此操作时,我都会从XmlSerializerMessageContractExporter的ExportBody方法中得到一个空引用异常,XmlSerializerMessageContractExporter方法在System.ServiceModel中内部使用该方法。我已经看过了,我看不出有什么明显的问题。由于某些原因,.NET也不希望在这种情况下使用源代码单步执行 简单地说,我能重现这一点的最基本方式是WCF自定义WSDL XmlSerializeRopection行为,wcf,wsdl,export,xmlserializer,Wcf,Wsdl,Export,Xmlserializer,我有一些代码可以动态构建自定义WCF wsdl。在一个特定场景中,导出的WSDL应该使用XmlSerializeRopeOptionBehavior作为IWsdlExportExtension,而不是默认的DataContractSerializeRopeOptionBehavior IWsdlExportExtension 但是,每次从WSDL生成代码中尝试此操作时,我都会从XmlSerializerMessageContractExporter的ExportBody方法中得到一个空引用异常,
var c = ContractDescription.GetContract(typeof(IMyService));
foreach (var op in c.Operations)
{
op.Behaviors.Remove(typeof(DataContractSerializerOperationBehavior));
op.Behaviors.Insert(0, new XmlSerializerOperationBehavior(op));
}
new WsdlExporter().ExportContract(c); // throws NullReferenceException
有人对此有什么想法吗
非常感谢。您检查过c是否为空吗 我唯一能想到的就是这句话
new WsdlExporter().ExportContract(c);
也许编译器不喜欢它,试试这个
WsdlExporter wsdlImporter = new WsdlExporter()
wsdlImporter.ExportContract(c);
我们过去曾遇到过wcf和链接操作的场景,解决方案是取消对呼叫的锁定。我已经找到了答案。问题在于,如果ServiceContract接口本身不存在XmlSerializerFormatAttribute,XmlSerializerPropertyBehavior将引发空引用异常。必须把整件事都想清楚 我想出来了。问题在于,如果ServiceContract接口本身不存在XmlSerializerFormatAttribute,XmlSerializerPropertyBehavior将引发空引用异常。必须把整件事都想清楚。。。