根据下面的图片,IIS上可能有多个WebSite,有多个服务,
所以我将它们从一起分开的唯一内容是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
给我了我想要的内容吗?
答案 0 :(得分:0)
使用以下代码段
获取服务器的当前基地址(主机名和端口)var baseAddress = OperationContext.Current.Host.BaseAddresses[0].Authority;