【问题标题】:How to get the correct local address URI when hosting IIS site on multiple bindings?在多个绑定上托管 IIS 站点时如何获取正确的本地地址 URI?
【发布时间】: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

【问题讨论】:

    标签: c# wcf iis webforms


    【解决方案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]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2012-06-06
    • 2016-02-07
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多