具有多个IIS绑定的WCF服务中的请求URL?

时间:2011-03-12 22:37:25

标签: .net wcf iis

我有一个IIS托管的WCF服务,并且希望在同一个Web应用程序上使用多个IIS绑定在多个域中使用它。例如:

使用.Net Framework 4及其multipleSiteBindingsEnabled属性,该服务成功激活。但是,只有一个 IIS绑定用作ServiceHost的基地址,而OperationContext中的属性始终包含该地址,无论哪个主机名用于拨打电话。

所以我的问题是:在服务方法中,如何检索用于呼叫的实际主机名?

我知道我可以使用HttpContextASP.NET Compatibility Mode来检索实际的请求网址,但是想知道是否还有另一种(更好的?)方式。

1 个答案:

答案 0 :(得分:1)

原来IncomingMessageProperties包含一个HttpRequestMessageProperty对象,其中包含所有请求详细信息,包括正确的主机名:

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

var hostName = httpRequest.Headers["host"];