Я сгенерировал прокси WCF из файла WSDL, но теперь, когда я вызываю прокси-методы, они возвращают ноль. Я включил ведение журнала сообщений и вижу, что сообщения с сервера возвращаются правильно.
Я проверил ответ на этот вопрос, но в моем случае, по крайней мере, имя возвращаемого объекта было одинаковым в сообщении и в WSDL. Я по-прежнему считаю, что проблема связана с файлом WSDL, поскольку он не извлекается обычным способом через URL-адрес «? Wsdl» (это сторонний веб-сервис), а предоставляется отдельно.
Тип возвращаемого значения метода - просто строка.
У кого-нибудь еще были подобные проблемы, и какое было соответствующее решение, если таковое было? Каков наиболее вероятный источник проблемы?
Re-редактирование:
Это RPC / закодированный веб-сервис. Как написано, я вижу ответ SOAP через ведение журнала сообщений, но WCF, похоже, не в состоянии проанализировать информацию.
Часть сообщения ответа службы выглядит следующим образом:
<ns1:ServiceResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="the target namespace">
<ns1:ReturnValue xsi:type="xsd:string">
Однако, при проверке исходящего сообщения от моего клиента, все по-другому:
<ns1:ServiceRequest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="the target namespace">
<RequestValue xsi:type="xsd:string" xmlns="">
Так что, возможно, прокси-сервер ожидает, что ответ будет иметь такую же структуру пространства имен, и, следовательно, не сможет его проанализировать.
Я попытался изменить атрибут type
на element
в определениях сообщений wsdl и добавить некоторые новые элементы в часть types
определения wsdl, но затем svcutil задыхается при генерации прокси, с жалобой на конфликт между предполагаемым стилем документа и указанным стилем rpc.
Из спецификации WSDL , раздел 3.5:
Если используется кодировка , то каждая часть сообщения ссылается на абстрактный тип с использованием атрибута type .
Но тогда я немного сбит с толку, поскольку в этом вопросе это, похоже, не было проблемой. Что потребуется для внесения аналогичного изменения с ограничением, что это RPC / кодированный сервис?