我有即时构建自定义 WCF wsdl 的代码。在一种特定情况下,导出的 WSDL 应使用 XmlSerializerOperationBehavior 作为 IWsdlExportExtension,而不是使用默认的 DataContractSerializerOperationBehavior IWsdlExportExtension。
但是,每次我从 WSDL 生成代码中尝试此操作时,我都会从 XmlSerializerMessageContractExporter 的 ExportBody 方法(由 XmlSerializerOperationBehavior ExportContract 方法在 System.ServiceModel 内部使用)获得空引用异常。我已经反光了,我看不出有什么明显的错误。出于某种原因,.NET 也不想在这种情况下使用源步进......
简单地说,我可以重现这个的最基本的方法是
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
有人对此有任何想法吗?
非常感谢。