Существует специфический WSDL, для которого ServiceContractGenerator продолжает создавать контракты сообщений (объекты оболочки запроса/ответа), которые я не хочу (я хочу прямые параметры), Другие WSDL работают нормально.
Когда я использую Visual Studio для создания WCF-клиента ( "Добавить ссылку на службу" ), и я нажимаю "Дополнительно...", флажок, который говорит "Всегда создавать контракты с сообщениями", правильно контролирует, являются ли объекты договора сообщения генерируется.
Однако, когда я использую класс ServiceContractGenerator для программного создания клиента WCF, он продолжает генерировать сообщения. Я попытался установить параметры ServiceContractGenerator в ServiceContractGenerationOptions.None, но результат тот же.
Вот код, который я использую:
MetadataSet metadataSet = new MetadataSet();
metadataSet.MetadataSections.Add(MetadataSection.CreateFromServiceDescription(System.Web.Services.Description.ServiceDescription.Read(wsdlStream)));
WsdlImporter importer = new WsdlImporter(metadataSet);
if (serviceDescription != null)
importer.WsdlDocuments.Add(serviceDescription);
foreach (XmlSchema nextSchema in schemas)
importer.XmlSchemas.Add(nextSchema);
ServiceContractGenerator generator = new ServiceContractGenerator();
generator.Options = ServiceContractGenerationOptions.None;
foreach (ContractDescription nextContract in importer.ImportAllContracts())
generator.GenerateServiceContractType(nextContract);
if (generator.Errors.Count != 0)
throw new Exception("Service assembly compile error: \r\n - " + string.Join("\r\n - ", generator.Errors.Select(e => e.Message)));
// Use generator.TargetCompileUnit to generate the code...
Что мне делать, чтобы ServiceContractGenerator генерировал веб-методы с прямыми параметрами?