在IIS上的WCF中获取主机名

问题描述 投票:0回答:1

根据下面的图片,IIS上可能有几个WebSite有几个服务,

enter image description here

所以我唯一将它们从一起分开的是Hostname,在其他网站兄弟服务可以一起调用所以我决定更改hostname,如果他们不在localhost所以在服务中我试过这样的事情:

HostName = OperationContext.Current.Channel.LocalAddress.Uri.Host.ToString();

并且当我通过它的代理我Rehome呼叫另一个服务时服务

 public void ReHome(string hostName)
    {
        if (!string.IsNullOrEmpty(hostName))
        {
            if (this.Endpoint.Address.Uri.DnsSafeHost.ToLower().Equals("localhost"))
            {
                string newAddress = string.Format("{0}://{1}{2}/{3}", Endpoint.Address.Uri.Scheme
                    , hostName, string.IsNullOrEmpty(Endpoint.Address.Uri.Port.ToString()) ? string.Empty : ":" + Endpoint.Address.Uri.Port.ToString()
                    , Endpoint.Address.Uri.AbsolutePath);
                this.Endpoint.Address = new EndpointAddress(newAddress);
            }
        }
    }

在服务中调用示例:

 using (var hisProxy = new HISIntegrationClient("hisIntegrationEndPoint", Internals.SYSTEM))
        {
            hisProxy.ReHome(HostName);
            ....
        }

所以OperationContext.Current.Channel.LocalAddress.Uri.Host给我提供我想要的上面的照片吗?

c# wcf iis
1个回答
0
投票

使用以下代码片段获取服务器的当前基址(主机名和端口)

var baseAddress = OperationContext.Current.Host.BaseAddresses[0].Authority;
© www.soinside.com 2019 - 2024. All rights reserved.