Проблема с ASMX WebServices - PullRequest
0 голосов
/ 05 марта 2009

Мы отправляем следующий запрос в веб-службу .Net 3.5 ASMX.

<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Login xmlns="http://tempuri.org/" id="o0" SOAP-ENC:root="1">
          <password xsi:type="xsd:string">1234</password> 
          <userName xsi:type="xsd:string">Developer</userName> 
        </Login>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>      


При отладке веб-службы мы обнаруживаем, что значения параметров, доступные веб-методу (логин и метод), равны нулю. Однако если мы удалим атрибут xsi: type = "xsd: string" из пароля и имени пользователя, все будет работать.
Пространство имен xsd указывает на http://www.w3.org/2001/XMLSchema,, что является допустимым.
Почему .Net не может десериализовать ответ? и почему это не исключение? Кстати: наши псевдонимы определения сервиса http://www.w3.org/2001/XMLSchema как "s". Может ли это быть проблемой?

С уважением,

Ответы [ 2 ]

1 голос
/ 17 мая 2009

Оформлен ли ваш сервис ASMX атрибутом [SoapRpcService]? Если нет, то это документ / буквальный сервис, и он не хочет XML в этом формате.

Как был отправлен этот XML? Это было построено вручную? Был ли он отправлен клиентом Java, созданным на основе WSDL, полученного из «service.asmx? WSDL»?

1 голос
/ 05 марта 2009

.NET сериализаторы полагаются на базовую схему для десериализации материала. Когда вы указываете атрибут xsi: type, вы в основном нарушаете контракт схемы.

КСТАТИ. Не используйте http://tempuri.org/, для создания собственного URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...