Я получаю данные от стороннего веб-сервиса, используя REST (используя WebHttpBinding
и WebHttpBehavior
). Когда я передаю недопустимый параметр в строке запроса, служба отвечает статусом 500 и описывает проблему. Ответ выглядит примерно так:
HTTP/1.1 500 Internal Server Error
Date: Tue, 14 Jun 2011 16:12:48 GMT
... more headers
<Error>Invalid integer value for ID</Error>
Я бы очень хотел иметь возможность записать это сообщение об ошибке. Мой клиент WCF выглядит так:
public class DataClient : ClientBase<IDataClient>, IDataClient
{
public DataClient (string endpointAddress)
: base(new WebHttpBinding(), new EndpointAddress(endpointAddress))
{
this.Endpoint.Behaviors.Add(new WebHttpBehavior());
}
public string GetData(string id)
{
// This is where the exception is thrown
return base.Channel.GetData(id);
}
}
Когда я ловлю выбрасываемое исключение, эти данные нигде не найти. Он просто говорит: «System.ServiceModel.CommunicationException: внутренняя ошибка сервера».
Я попытался создать пользовательское поведение и добавил инспектор сообщений, но мой код инспектора пользовательских сообщений не выполняется до того, как сгенерировано исключение (оно выполняется, если не сгенерировано исключение).