我有一个IIS托管的WCF服务,并且希望在同一个Web应用程序上使用多个IIS绑定在多个域中使用它。例如:
使用.Net Framework 4及其multipleSiteBindingsEnabled
属性,该服务成功激活。但是,只有一个 IIS绑定用作ServiceHost
的基地址,而OperationContext
中的属性始终包含该地址,无论哪个主机名用于拨打电话。
所以我的问题是:在服务方法中,如何检索用于呼叫的实际主机名?
我知道我可以使用HttpContext
和ASP.NET Compatibility Mode来检索实际的请求网址,但是想知道是否还有另一种(更好的?)方式。
答案 0 :(得分:1)
原来IncomingMessageProperties
包含一个HttpRequestMessageProperty
对象,其中包含所有请求详细信息,包括正确的主机名:
var ctx = OperationContext.Current;
var httpRequest = ctx.IncomingMessageProperties["httpRequest"]
as HttpRequestMessageProperty;
var hostName = httpRequest.Headers["host"];