Ошибка HTTP 404 проявляется как EndPointNotFoundException на клиенте WCF - PullRequest
0 голосов
/ 19 мая 2010

Как я могу заставить моего клиента правильно обрабатывать ошибку 404? Прямо сейчас это ловит общее исключение ...

Мой WCF-сервер использует WebOperationContext.Current.OutgoingResponse.SetStatusAsNotFound (); Чтобы вернуть код ошибки 404

однако мой клиент WCF интерпретирует его как исключение EndPointNotFoundException

Не было прослушивания конечной точки на http://myUrl, которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. См. InnerException, если имеется, для более подробной информации.

Внутренним исключением является WebException "Удаленный сервер возвратил ошибку: (404) Not Found.

Ответы [ 2 ]

0 голосов
/ 25 июня 2011

Старый поток, который я наткнулся на Google. Если кто-то смотрит, то я думаю, что у меня есть более точное решение:

try
{
    //operation that throws the Exception
}
catch (EndpointNotFoundException e)
{
    WebException w = e.InnerException as WebException;

    if (w != null)
    {
         HttpWebResponse resp = w.Response as HttpWebResponse;
         if (resp != null && resp.StatusCode == HttpStatusCode.NotFound)
         {
             //The error was a 404 not found
         }
         else
         {
             //The response was null, or the error was not a 404
         }
    }
    else
    {
        //The InnerException was not a WebException
    }
}
0 голосов
/ 20 мая 2010

Вот что я нашел ...


catch (EndpointNotFoundException exception) 
{

                if (exception.InnerException.GetType() == typeof(WebException))
                {
                    WebException webException = (WebException) exception.InnerException;
                    if (webException.Status == WebExceptionStatus.ProtocolError)
                    {
                        if (((HttpWebResponse) webException.Response).StatusCode == HttpStatusCode.NotFound)
                        {
                          ...
                        }

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