У меня есть код, который создает пользовательский WCF wsdl на лету. В одном конкретном сценарии экспортируемый WSDL должен использовать XmlSerializerOperationBehavior как IWsdlExportExtension, в отличие от стандартного DataContractSerializerOperationBehavior IWsdlExportExtension.WCF Custom WSDL XmlSerializerOperationBehavior
Однако, каждый раз, когда я пытаюсь это сделать из кода генерации WSDL, я получаю исключение ссылочной ссылки из метода ExportBody для XmlSerializerMessageContractExporter (который используется внутри System.ServiceModel методом XmlSerializerOperationBehavior ExportContract). Я отразил это, и я не вижу ничего явно неправильного. По какой-то причине, .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
Кто-нибудь есть какие-либо идеи о это?
Большое спасибо.
Я понял. Проблема заключается в том, что XmlSerializerOperationBehavior будет генерировать исключение с нулевой ссылкой, если XmlSerializerFormatAttribute отсутствует на самом интерфейсе ServiceContract. Должен был отразить все это, чтобы понять это ... – Jeff