Проблема с генерацией классов при подключении к web сервису soap из Visual Studio
Возникла необходимость создать клиента для web-сервиса (сервис чужой). При добавлении через стандартный механизм в VS 2019 возникает ошибка " Ошибка специального инструмента: Не удалось создать код для ссылки на службу "UnoService". Подробности см. в других сообщениях об ошибках и предупреждениях. WebApplication4 ....WebApplication4\WebApplication4\Connected Services\UnoService\Reference.svcmap "
Пробовал также через утилиту svcutil. Получаю следующую ошибку
Идентификатор URI: http://url?wsdl/Language=c#
Метаданные содержат неразрешимую ссылку: "http://url?wsdl/Language=c#".
Сервер вернул недопустимое сообщение об ошибке SOAP. Дополнительные сведения см. в описании внутреннего исключения.
Отсутствует обязательное значение атрибута xml:lang.
Ошибка HTTP GET
URI: http://url?wsdl/Language=c#
Возникла ошибка при скачивании "http://url?wsdl/Language=c#".
Сбой запроса с сообщением об ошибке:
--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Empty request</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
--.
то есть прокси-классы в Reference.cs не генерятся
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebApplication4.UnoService {
}
В SOAP UI запрос отрабатывает нормально, ответ возвращается, но тест проваливает ошибкой
com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.SchemaComplianceAssertion@22dc5164
line 9: Element not allowed: Document@http://url in element documents
line 18: Element not allowed: Document@http://url in element documents
com.eviware.soapui.impl.wsdl.teststeps.assertions.soap.NotSoapFaultAssertion@752d4c40
Подскажите, куда копать, на что обратить внимание? p.s. С другими сервисами проблем нет
Попробовал сгенерить из файла .wsdl
PS ...\WebApplication4> svcutil "c:\temp\UNO.wsdl"/Language:C#
Программное средство Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, версия 4.8.3928.0]
c Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
Ошибка: Не удается импортировать wsdl:portType
Подробности: Сгенерировано исключение во время запуска расширения импорта WSDL: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Ошибка: Тип, на который указывает ссылка, "http://schemas.xmlsoap.org/soap/encoding/:Array", допустим только для кодированных SOAP.
XPath к источнику ошибки: //wsdl:definitions[@targetNamespace='http://url']/wsdl:portType[@name='UNOPort']
Ошибка: Не удается импортировать wsdl:binding
Подробности: Ошибка импорта wsdl:portType, от которого зависит wsdl:binding.
XPath к wsdl:portType: //wsdl:definitions[@targetNamespace='http://url']/wsdl:portType[@name='UNOPort']
XPath к источнику ошибки: //wsdl:definitions[@targetNamespace='http://url']/wsdl:binding[@name='UNOBinding']
Ошибка: Не удается импортировать wsdl:port
Подробности: Ошибка импорта wsdl:binding, от которого зависит wsdl:port.
XPath к wsdl:binding: //wsdl:definitions[@targetNamespace='http://url']/wsdl:binding[@name='UNOBinding']
XPath к источнику ошибки: //wsdl:definitions[@targetNamespace='http://url']/wsdl:service[@name='UNOService']/wsdl:port[@name='UNOPort']
Источник: Stack Overflow на русском