2017-12-25 10 views
0

Basierend auf unter pic, kann es mit mehreren Diensten mehrere Website auf IIS sein,Get Hostname in WCF auf IIS

enter image description here

So ist die einzige Sache, die ich trennen sie haben von zusammen ist Hostname, in der andere Website Geschwister Dienste rufen können zusammen so habe ich mich entschlossen hostname zu ändern, wenn sie nicht auf localhost sind so in Service, den ich so etwas wie dies versucht:

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

und in Dienst, wenn ich rufe ein anderer Dienst von Proxy es den I 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); 
      } 
     } 
    } 

Aufruf Beispiel in einem Service:

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

so ist OperationContext.Current.Channel.LocalAddress.Uri.Host mir geben, was ich, dass die oben erwähnten pic wollen?

Antwort

0

erhalten Sie die aktuelle Basis-Adresse des Servers (Hostname und Port) Schnipsel folgenden Code verwendet

var baseAddress = OperationContext.Current.Host.BaseAddresses[0].Authority; 
+0

Lassen Sie mich es überprüfen, was ist der Unterschied zwischen ihnen? – Aria

+0

Nop ich vor ein Problem, wenn Hostnamen in IIS festgelegt, Service-Operation wird nicht zugegriffen werden, werde ich das Feedback zurück ... – Aria

+0

Es funktionierte, gab es mir Hostname, aber mein Code 'OperationContext.Current.Channel.LocalAddress.Uri .Host.ToString() 'gib mir auch wirklich Hostname. – Aria