wcf Endpunkt relative Adresse

8

Ich lerne einfach nur und kann eine sehr einfache Sache nicht verstehen.

Ich erstelle einen WCF-Dienst, den ich in IIS hosten möchte, genau wie eine Webanwendung mit einem eigenen Pfad wie http://myhost/myapp/ und alles.

Ich erstelle das WCF-Dienstprojekt in VS, ich habe eine *.svc -Datei, die es beschreibt, dann definiere ich einen einfachen Endpunkt wie folgt:

%Vor%

Dann veröffentliche ich diesen Dienst wie eine IIS-Webanwendung in einem virtuellen Verzeichnis. Nehmen wir an, sein Name psh_pub , also kann ich über die URL http://localhost/psh_pub/pshservice.svc/ auf den Dienst zugreifen. Es zeigt mir WCF Grüße Seite und gibt mir einen Link zu WSDL, die mir korrekte WSDL Beschreibung gibt.

Das ist in Ordnung.

Der nächste Schritt - Ich möchte einen MEX-Endpunkt hinzufügen. Ich füge zu config hinzu:

%Vor%

Das ist auch in Ordnung, der Endpunkt ist erreichbar unter der Adresse http://localhost/psh_pub/pshservice.svc/mex und WcfTestClient.exe gibt mir die korrekte Konfiguration von dieser URL.

Hier kommt das Problem.

Ich habe einen WCF-Dienst, der unter IIS arbeitet, und ich möchte einen weiteren Endpunkt hinzufügen. Zum Beispiel sei es ein net.tcp Endpunkt. Der IIS ist standardmäßig konfiguriert, um net.tcp -Verbindungen an Port 808 zu akzeptieren, und ich füge net.tcp -Protokoll zu Eigenschaften meiner Web-App hinzu, und ich möchte meinem Dienst einen Endpunkt wie folgt hinzufügen:

%Vor%

und jetzt gehe ich davon aus, dass mein Dienst über die URL net.tcp://localhost:808/psh_pub/pshservice.svc erreichbar sein soll. Aber es ist nicht. Und jedes "How-To" und Handbuch im Web sagt, dass ich die vollständige Adresse in der Konfigurationsdatei wie folgt angeben sollte:

%Vor%

Und wenn ich das tue, funktioniert es. Aber wenn der Dienst in einem anderen virtuellen Verzeichnis gehostet wird, muss ich die Konfiguration ändern. Wenn ich es auf dem anderen Server hosten muss, muss ich die Konfiguration ändern. Wenn ich es auf mehreren Servern hostet, muss ich so viele Konfigurationen verwalten wie Server, die ich habe.

Die Hauptfragen sind also:

Gibt es in WCF eine Möglichkeit, einen Endpunkt net.tcp (oder https) eines von IIS gehosteten WCF-Diensts anzugeben, ohne dafür die absolute URL anzugeben?

    
pushist1y 31.10.2011, 11:27
quelle

2 Antworten

7

Sie sollten eine Basisadresse für Ihre net.tcp Service-Endpunkte definieren können:

%Vor%

Dann sollten Sie relative Adressen in Ihren tatsächlichen Endpunkten verwenden können:

%Vor%     
marc_s 31.10.2011, 11:50
quelle
4

WCF-Datei-lose Aktivierung (. Net 4.0) können Sie unter einem relativen virtuellen Pfad mit dem RelativeAddress-Attribut registrieren:

%Vor%
  

relativ zur Basisadresse der Webanwendung

Dieser Link spricht darüber: Ссылка

    
Craig 31.10.2011 11:33
quelle

Tags und Links