Ошибка мыла: «Серверу не удалось обработать запрос» «Ссылка на объект не установлена ​​на экземпляр объекта» - PullRequest
12 голосов
/ 15 марта 2011

Когда я отправляю SOAP-запрос к моей службе в IIS локально, все работает нормально. Когда я отправляю запрос SOAP той же службе, которая работает на IIS на другом хосте, все работает нормально.

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

<soap:Body>
<soap:Fault>
  <faultcode>soap:Server</faultcode>
  <faultstring>Server was unable to process request. ---&gt; Object reference not set to an instance of an object.</faultstring>
  <detail />
</soap:Fault>

Мне нужно понять, почему он получает эту ошибку.

Его SOAP-запрос точно такой же, как и SOAP-запрос, но мой работает, а его - нет.

Ответы [ 2 ]

7 голосов
/ 16 марта 2011

Спасибо, ребята, за вашу помощь.Я решил проблему.

В поле «SoapAction» в запросе мыла указан неверный URI

Я рекомендую использовать сниффер HTTP.Анализатор http покажет свойства SOAP.

Свойство SOAPAction должно иметь что-то вроде: http://tempuri.org/YourServiceMethodName

5 голосов
/ 15 марта 2011

Ошибка «Ссылка на объект» труднее всего устранить, если вы точно не знаете, где происходит ошибка. Обязательно проверьте нулевые значения, поскольку наиболее очевидной причиной этой ошибки является объект, который не инициализируется, или переменная, имеющая нулевое значение, когда ожидается, что он будет содержать объект или значение.

Кроме того, убедитесь, что вы следуете рекомендациям по обработке ошибок. Постарайтесь перехватить ошибки на как можно более раннем уровне, если только вы не намерены позволить обработчику ошибок более высокого уровня перехватить ошибку. Тот факт, что вы получаете эту ошибку, означает, что обработка ошибок недостаточна.

Наконец, я настоятельно рекомендую включить некоторый механизм ведения журнала для ваших обработчиков ошибок. Сохраните ошибки в журнале событий или в базе данных или даже отправьте их по электронной почте - что угодно, чтобы вы могли точно определить, где находится ошибка. НЕ отображать ошибку обратно пользователю .

Есть несколько вариантов для этого. Мониторинг состояния Asp.Net отлично работает в веб-сервисах, а также на стандартных сайтах asp.net. Также есть ELMAH , или вы можете написать свой собственный код для этого.

Если вы будете следовать этим рекомендациям, вы не попадете в ситуацию, когда не поймете, как происходит ошибка. У вас будет информация, необходимая для устранения неполадок, и ваши приложения будут более надежными.

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