Значение параметра webmethod имеет нулевое значение - PullRequest
0 голосов
/ 17 марта 2011

Я разработал .net webservice из wsdl.Ожидаемый ввод мыла имеет тело мыла (взято из браузера) как

<soap:Body>
    <InsertRequest xmlns="http://www.xyz.com/MainType/">
      <InsertRequest>
        <context xmlns="">
          ...
        </context>
        <request xmlns="">
          ...
        </request>
      </InsertRequest>
    </InsertRequest>
  </soap:Body>

Мой клиент отправляет запрос на мыло с телом мыла, как показано ниже:

<soap:Body>
    <InsertRequest xmlns="http://www.xyz.com/MainType/">
      <InsertRequest xmlns="">
        <context>
          ...
        </context>
        <request>
          ...
        </request>
      </InsertRequest>
    </InsertRequest>
  </soap:Body>

Я написал фиктивное приложение, котороевыполняет вызов HttpWebRequest для веб-службы .net.В этом случае, если я передам мыльный конверт с мыльным корпусом, как показано ниже, он будет работать

    <soap:Body>
    <InsertRequest xmlns="http://www.xyz.com/MainType/">
      <InsertRequest>
        <context xmlns="">
          ...
        </context>
        <request xmlns="">
          ...
        </request>
      </InsertRequest>
    </InsertRequest>
  </soap:Body>

Но мой клиент дал отправленный им мыльный конверт, и его мыльное тело будет

    <soap:Body>
    <InsertRequest xmlns="http://www.xyz.com/MainType/">
      <InsertRequest xmlns="">
        <context>
          ...
        </context>
        <request>
          ...
        </request>
      </InsertRequest>
    </InsertRequest>
  </soap:Body>

Когда я использую это мыльное тело в фиктивном приложении, значение параметра в моем веб-методе InsertRequest (InsertRequest insertRequest) равно NULL.Может ли кто-нибудь сообщить мне, почему параметр получает значение NULL в случае вышеуказанного мыльного тела?Кроме того, почему существует разница в xmlns = '' теле мыла между обоими сообщениями Soap?

Заранее спасибо, Хариш

1 Ответ

0 голосов
/ 18 марта 2011

Нулевой параметр обычно указывает, что входящий SOAP не может быть сериализован в тип.

Когда вы создавали сервис из WSDL, вы делали это вручную или использовали инструмент?

Попробуйте создать заглушку службы из WSDL с помощью этого инструмента: http://www.thinktecture.com/resourcearchive/tools-and-software/wscf и посмотрите, есть ли какие-либо отличия в контрактах / скелетных классах данных от вашей реализации. Затем вы можете поместить код реализации в скелет и попытаться вызвать его с помощью предоставленного SOAP XML для проверки совместимости.

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