在多个绑定上托管 IIS 站点时如何获取正确的本地地址 URI?
Posted
技术标签:
【中文标题】在多个绑定上托管 IIS 站点时如何获取正确的本地地址 URI?【英文标题】:How to get the correct local address URI when hosting IIS site on multiple bindings? 【发布时间】:2019-12-15 01:23:53 【问题描述】:我在 IIS 中配置了一个具有多个端口绑定的简单服务。 无论调用哪个端口,当前通道本地地址始终相同。
.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class TestService : ITestService
public string Test()
return OperationContext.Current.Channel.LocalAddress.Uri.Port.ToString();
调用testHost2:7772
-> 返回7772
调用testHost1:7771
-> 也返回7772
【问题讨论】:
【参考方案1】:您可以使用以下代码通过 WCF 获取主机名和端口:
var test = OperationContext.Current.Host.BaseAddresses[0].Authority;
或
Uri uri = OperationContext.Current.IncomingMessageHeaders.To ;
【讨论】:
OperationContext.Current.IncomingMessageHeaders.To.Port
返回 7772,OperationContext.Current.Host.BaseAddresses
包含两个地址,但我找不到调用的地址,就像 IIS 总是重定向到第一个端点 @JalpaPanchal
使用这个“OperationContext.Current.IncomingMessageHeaders.To”不要添加“port”。
这有什么不同? To
返回包含第一个绑定而不是第二个绑定的 URI
对象。无论调用什么端点。
你试过“var test = OperationContext.Current.Host.BaseAddresses[0].Authority;”
BaseAddresses 包含这两个绑定,但我不知道如何确定哪一个被称为BaseAddresses[0]
或BaseAddresses[1]
。以上是关于在多个绑定上托管 IIS 站点时如何获取正确的本地地址 URI?的主要内容,如果未能解决你的问题,请参考以下文章
IIS8 - 在同一台服务器上托管 SSL 和非 SSL 站点
WCF net.tcp 绑定:托管多个服务是不是需要端口共享?
访问本地 IIS 上托管的 WCF 服务时出错:“相对 URI 不支持此操作。”