URL-адрес запроса в службе WCF с несколькими привязками IIS? - PullRequest
2 голосов
/ 13 марта 2011

У меня есть служба WCF, размещенная в IIS, и я хочу сделать ее доступной в нескольких доменах, используя несколько привязок IIS в одном веб-приложении. Пример:

Используя .Net Framework 4 и его атрибут multipleSiteBindingsEnabled, служба успешно активируется. Однако только одна IIS-привязка используется в качестве базового адреса для ServiceHost, а свойства в OperationContext всегда содержат этот адрес независимо от того, какое имя хоста использовалось для совершения вызова.

Итак, мой вопрос: В методе службы, как я могу получить фактическое имя хоста, которое использовалось для вызова?

Я знаю, что мог бы использовать HttpContext с режимом совместимости ASP.NET для получения фактического URL запроса, но мне было интересно, есть ли другой (лучший?) Способ.

1 Ответ

1 голос
/ 16 марта 2011

Оказывается, IncomingMessageProperties содержит объект HttpRequestMessageProperty, который содержит все детали запроса, включая правильное имя хоста:

var ctx = OperationContext.Current;
var httpRequest = ctx.IncomingMessageProperties["httpRequest"]
                  as HttpRequestMessageProperty;

var hostName = httpRequest.Headers["host"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...