2010-04-01 2 views
0

У меня есть код, который создает пользовательский 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 

Кто-нибудь есть какие-либо идеи о это?

Большое спасибо.

ответ

0

вы проверяете c не является нулевой?

Единственное, что я могу думать это утверждение

new WsdlExporter().ExportContract(c); 

возможно compilier не нравится, попробуйте это вместо

WsdlExporter wsdlImporter = new WsdlExporter() 
wsdlImporter.ExportContract(c); 

У нас были сценарии в прошлом с wcf и цепочки, и решение заключалось в том, чтобы развязать вызовы.

+0

Я понял. Проблема заключается в том, что XmlSerializerOperationBehavior будет генерировать исключение с нулевой ссылкой, если XmlSerializerFormatAttribute отсутствует на самом интерфейсе ServiceContract. Должен был отразить все это, чтобы понять это ... – Jeff

0

Я понял. Проблема заключается в том, что XmlSerializerOperationBehavior будет генерировать исключение с нулевой ссылкой, если XmlSerializerFormatAttribute отсутствует на самом интерфейсе ServiceContract. Должен был отразить все это, чтобы понять это ...

Смежные вопросы