Как мне получить URI, который выбросил WebException? - PullRequest
2 голосов
/ 07 декабря 2009

Я вызываю метод на веб-сервисе, и он выдает 403 Forbidden WebException ...

System.Net.WebException: запрос Ошибка с HTTP-статусом 403: Запретное.

Я зарегистрировал эту ошибку, но мне бы очень хотелось, чтобы URI был записан в сообщении журнала, чтобы было легко определить, какой веб-сервис вызывает проблему.

Есть ли простой способ получить URI из создаваемого исключения WebException? Я просмотрел список свойств и не вижу ничего, что могло бы дать мне то, что я хочу.

Ответы [ 3 ]

1 голос
/ 07 декабря 2009

Вы можете получить доступ к свойству Url в прокси-объекте клиента SOAP (тип SoapHttpClientProtocol).

Если вы вызываете две разные веб-службы из одного метода в своем коде, просто поместите try {} в ловушку вызовов веб-службы и добавьте соответствующий пользовательский Exception со свойством Url нарушающей веб-службы.

Что-то вроде:

string url = client.Url;
try
{
  client.MyWebServiceCall();
  url = client2.Url;
  client2.MyWebServiceCall2();
}
catch (Exception ex)
{
  throw new Exception("Webservice call failed. Url: "+url+", Error:"+ex.Message,ex);
}
0 голосов
/ 13 апреля 2019

Это помогло мне получить Uri непосредственно из WebException:

Uri uri = wex.Response.ResponseUri;
0 голосов
/ 21 апреля 2012

Убедитесь, что вы не звоните в службу через веб-прокси, необходимый для аутентификации. Вы получите эту (или, возможно, 401) ошибку и выдерните свои волосы (как я), пытаясь выяснить, где происходит сбой. Я не осознавал, что происходило, пока не выполнил трассировку сети и не обнаружил, что запросы попадают на наш исходящий прокси-сервер с проверкой подлинности, а запрос не имеет учетных данных и вернулся в норму.

...