Можно ли реализовать перенаправитель / обратный прокси-сервер с помощью RequestInterceptor из начального комплекта WCF REST

Я пытаюсь реализовать обратный прокси-сервер, используя RequestInterceptor из стартового комплекта WCF REST. Я могу установить основные свойства заголовка и настроить вызовы. Я застреваю в следующих аспектах:

  1. Возвращая соответствующий ответ - мой веб-сервис может вернуть текст +xml, изображение или json. Я не могу отправить соответствующий тип ответа. Перегрузки Message.CreateMessage все выровнены по SOAP, т.е. они принимают только конструкции Xml, поэтому я не могу отправлять ни JSON, ни потоки изображений. Мне нужно конвертировать их в XElements - я определенно делаю что-то не так здесь.

  2. Я также хочу, чтобы обратный прокси-сервер работал нормально при наличии файлов cookie, gzip/deflate и SSL.

Исходя из вышеизложенных требований, считаете ли вы, что имеет смысл сделать это с помощью стартового набора REST? Интерпретатор Request довольно легко подключался, однако остальная часть кода сводит меня с ума.

1 ответ

Решение

Существует соответствие между JSON и произвольным двоичным контентом в XML, который используется в сообщениях для WCF (см. Некоторые примеры на http://blogs.msdn.com/b/carlosfigueira/archive/2011/04/19/wcf-extensibility-message-inspectors.aspx), поэтому вы можете использовать Message.CreateMessage для создания сообщений не в формате XML.

Сказав это, это действительно не интуитивно делать это в WCF на данный момент. Новые библиотеки в веб-API WCF - http://wcf.codeplex.com/ - предоставляют очень хороший способ перехвата / перенаправления / обхода конвейера WCF, особенно для HTTP-сообщений. Кроме того, он поддерживает несколько форматов собственным способом (т. Е. Без необходимости выполнять какое-либо отображение в XML).

Другие вопросы по тегам