その場でカスタム WCF wsdl をビルドするコードがあります。1 つの特定のシナリオでは、エクスポートされる WSDL は、デフォルトの DataContractSerializerOperationBehavior IWsdlExportExtension ではなく、XmlSerializerOperationBehavior を IWsdlExportExtension として使用する必要があります。
ただし、WSDL 生成コードからこれを試みるたびに、XmlSerializerMessageContractExporter の ExportBody メソッド (XmlSerializerOperationBehavior ExportContract メソッドによって System.ServiceModel で内部的に使用される) から null 参照例外が発生します。私はそれを反射させましたが、明らかに間違っているものは何も見えません。何らかの理由で、.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
誰かがこれについて何か考えを持っていますか?
どうもありがとう。