Welcher Service Endpunkt wurde verwendet

16/05/2008 - 09:53 von Michael Ertelt | Report spam
Hallo,

Ein WCF Service bietet seine Funktionen über mehrere Endpunkte an und ist
beispielsweise
wie folgt konfiguriert...

<services>
<service name="MyService">
<clear />
<endpoint address="E1" binding="netTcpBinding" name="A"
contract="IMyService" />
<endpoint address="E2" binding="netTcpBinding" name="B"
contract="IMyService" />
<endpoint address="E3" binding="netTcpBinding" name="C"
contract="IMyService" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:2000/" />
</baseAddresses>
</host>
</service>
</services>

Ich möchte nun innerhalb des Service (beim Aufruf einer Funktion von
MyService) den Namen des Endpunktes herausbekommen welcher vom Client
verwendet wurde (also hier "A", "B" oder "C").

Die Adresse bekomme ich über den OperationContext heraus
OperationContext.Current.Channel.LocalAddress.ToString() ergibt hier
beispielsweise "net.tcp://localhost:2000/E1"
Kann mir jemand einen Hinweis geben, wie ich ohne Aufwand den Namen
ermitteln kann

Michael
 

Lesen sie die antworten

#1 Michael Ertelt
16/05/2008 - 12:51 | Warnen spam
Eine mögliche Lösung habe ich inzwischen selbst gefunden. Dabei wird die
Adresse mit denen der verfügbaren Endpunkte des Hosts verglichen...

String localAddress =
OperationContext.Current.Channel.LocalAddress.ToString();
foreach (ServiceEndpoint endpoint in
OperationContext.Current.Host.Description.Endpoints)
{
if (localAddress.Equals(endpoint.Address.ToString()))
return endpoint.Name;
}

Danke trotzdem

Ähnliche fragen