Получение деталей ошибки от REST WCF

Мне использовал сервис REST клиент.Net WCF.

Когда с ошибкой встречаются остальные, сервис возвращает HTTP 400, Плохой Запрос с органом по ответу, содержащим JSON, сериализировал детали.

Если я выполняю запрос с помощью Скрипача, JavaScript, или непосредственно от C# я могу легко получить доступ к органу по ответу, когда ошибка происходит.

Однако я использую WCF ChannelFactory с 6 довольно сложными интерфейсами. Исключение, выданное этим прокси, всегда a ProtocolException, без полезных деталей.

Там какой-либо путь состоит в том, чтобы получить орган по ответу, когда я получаю эту ошибку?


Обновление

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

ОСТАЛЬНОЕ обслуживает, мы используем, изменится и когда они делают сложные интерфейсы обновляются. Используя ChannelFactory с новыми средствами интерфейсов, что мы получим время компиляции (а не время выполнения) исключения и сделаем их намного легче поддержать и обновить код.

Там какой-либо путь состоит в том, чтобы получить орган по ответу для ошибочного состояния HTTP при использовании Каналов WCF?

9
задан Keith 29 March 2010 в 08:26
поделиться

3 ответа

Не используйте 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>()
1
ответ дан 4 December 2019 в 13:46
поделиться

Вы можете попробовать выбросить WebProtocolException из службы. Таким образом, сведения об ошибке должны быть включены в тело ответа HTTP. Прочтите эту статью:

Эффективная обработка ошибок с помощью WCF и REST

3
ответ дан 4 December 2019 в 13:46
поделиться

Мои два цента - это то, что WCF хорошо раскрывает один и тот же класс с использованием множества разных привязок. При взаимодействии с C # используйте привязку SOAP, которая хорошо справляется с информацией об исключениях. Если вам необходимо использовать привязку стиля REST, вы можете использовать простой WebRequest для вызова службы и использовать сериализатор JSON для десериализации результатов. Это также даст вам прямой доступ к коду ответа.

1
ответ дан 4 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: