Перенаправить запрос службы wcf на внутренний адрес - PullRequest
0 голосов
/ 31 марта 2011

Теперь у меня есть общедоступная служба REST Wcf A и несколько внутренних служб B REST wcf, каждая из внутренних служб идентифицируется по имени. Можно ли создать маршрутизатор / прокси в службе A, а затем, когда пользователи запрашивают интерфейс службы A, он может перенаправить запрос на внутренние службы на основе имени?

Я пытался использовать:

WebOperationContext.Current.OutgoingResponse.Location = targetInternalPath;
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect; // or MovedPermanently

Все отлично работает, кроме заголовков, которые мы получаем на стороне клиента. Вот подробности из Fiddler:

Другими словами, клиент знает точный внутренний адрес, тип контента и длина контента неверны. Все не то, что я хочу. Я боролся с этой проблемой в течение многих дней, у кого-нибудь есть идеи?

С наилучшими пожеланиями.

Джонни

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Функцию WCF RoutingService нельзя использовать, поскольку она поддерживает только привязки на основе мыла.Вы можете использовать модуль перезаписи URL IIS 7, как предложено здесь Матиасом в ответе на форуме MSDN.Вы можете настроить его так, чтобы он перенаправлял вызовы на внутренние службы на основе REST (обзор его использования по этой ссылке). Я не уверен, что это поможет переписать содержимое заголовка ответа, но оно того стоит.смотреть.

0 голосов
/ 31 марта 2011

Я в замешательстве.То, что вы видите в Fiddler - это именно то, что вы просите это сделать.Ваша служба A возвращает ответ о перенаправлении.Предполагается, что клиент должен ответить на это перенаправление, следуя URI в заголовке Location.

Если вы действительно хотите скрыть внутренние службы, вам нужно заставить службу A работать как прокси.Он должен сделать запрос к внутренним службам сам, а затем вернуть ответ, который он получает.

Вы пытаетесь скрыть внутренние службы по соображениям безопасности или просто клиенты не знают об этих внутреннихсервера заранее?

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