Мне использовал сервис REST клиент.Net WCF.
Когда с ошибкой встречаются остальные, сервис возвращает HTTP 400, Плохой Запрос с органом по ответу, содержащим JSON, сериализировал детали.
Если я выполняю запрос с помощью Скрипача, JavaScript, или непосредственно от C# я могу легко получить доступ к органу по ответу, когда ошибка происходит.
Однако я использую WCF ChannelFactory
с 6 довольно сложными интерфейсами. Исключение, выданное этим прокси, всегда a ProtocolException
, без полезных деталей.
Там какой-либо путь состоит в том, чтобы получить орган по ответу, когда я получаю эту ошибку?
Обновление
Я понимаю, что существует загрузка различных способов сделать это использование .NET и что существуют другие способы получить ошибочный ответ. Они полезны, чтобы знать, но сделать не, отвечают на этот вопрос.
ОСТАЛЬНОЕ обслуживает, мы используем, изменится и когда они делают сложные интерфейсы обновляются. Используя ChannelFactory
с новыми средствами интерфейсов, что мы получим время компиляции (а не время выполнения) исключения и сделаем их намного легче поддержать и обновить код.
Там какой-либо путь состоит в том, чтобы получить орган по ответу для ошибочного состояния HTTP при использовании Каналов WCF?
Не используйте ChannelFactory :-) Хотя серьезно. Зачем вам создавать интерфейс REST, а затем использовать прокси-сервер WCF. В чем преимущество использования службы REST? Почему бы просто не использовать wsHttpBinding? С помощью класса HttpClient из начального набора REST вы можете выполнять стандартные HTTP-запросы, а затем десериализовать ответ с помощью DataContractSerializer.
Например.
var httpClient = new HttpClient();
var content = httpClient.Get("http://example.org/customer/45").Content;
var customer = content.ReadAsDataContract<Customer>()
Вы можете попробовать выбросить WebProtocolException из службы. Таким образом, сведения об ошибке должны быть включены в тело ответа HTTP. Прочтите эту статью:
Мои два цента - это то, что WCF хорошо раскрывает один и тот же класс с использованием множества разных привязок. При взаимодействии с C # используйте привязку SOAP, которая хорошо справляется с информацией об исключениях. Если вам необходимо использовать привязку стиля REST, вы можете использовать простой WebRequest для вызова службы и использовать сериализатор JSON для десериализации результатов. Это также даст вам прямой доступ к коду ответа.