2009-07-25 10 views
4

Ich habe versucht, einen neuen Endpunkt in einem Service hinzuzufügen, der unter IIS gehostet wird, aber nicht in der Lage war, es für den letzten Tag oder so herauszufinden.Mehrere Endpunkte unter IIS

Das ist mein Verständnis:

  • Sie so lange mehrere Endpunkte unter IIS haben können, wie sie eindeutige Adressen haben.
  • Sie könnten eine Basisadresse zuweisen, aber es wird durch das Setup des virtuellen Verzeichnisses in IIS außer Kraft gesetzt.

Mein virtuelles Verzeichnis http://localhost/WcfCert/

<services> 
    <service name="WcfCertServer.Service1" behaviorConfiguration="WcfCertServer.Service1Behavior"> 
    <endpoint address="" binding="wsHttpBinding" contract="WcfCertServer.IService1"/> 
    <endpoint address="test" binding="wsHttpBinding" contract="WcfCertServer.IService1"/> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

ist, kann ich den Dienst bringen mit http://localhost/wcfcert/service1.svc

aber http://localhost/wcfcert/test/service1.svc/test nichts in IE oder die Client-Anwendung zurückkehren

was bin ich hier fehlt?

Edit:

Also habe ich weitere Tests, und hier ist, was ich entdeckt.

Wenn ich WcfTestClient.exe starte und entweder http://localhost:1523/Service1.svc oder http://localhost:1523/Service1.svc/mex hinzufüge, wird der Endpunkt unter dieser Adresse hinzugefügt. also hier ist meine Frage sollte nicht http://localhost:1523/Service1.svc nur den ersten Endpunkt darstellen? Warum sollte diese Adresse hinzugefügt werden, um beide Endpunkte anzuzeigen?

aber wenn ich versuche, http://localhost:1523/Service1.svc/test hinzufügen ich

Error: Cannot obtain Metadata from http://localhost:1523/Service1.svc/test If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:1523/Service1.svc/test Metadata contains a reference that cannot be resolved: ' http://localhost:1523/Service1.svc/test '. Sendera:BadContextToken The message could not be processed. This is most likely because the action ' http://schemas.xmlsoap.org/ws/2004/09/transfer/Get ' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.HTTP GET Error URI: http://localhost:1523/Service1.svc/test There was an error downloading ' http://localhost:1523/Service1.svc/test '. The request failed with HTTP status 400: Bad Request.

+2

ich habe ein ähnliches Problem, das ich würde gerne erhalten eine Lösung für das. Der einzige Unterschied zu dem, was Sie beschreiben, scheinen s sein, dass ich eine '400 Schlechte Anfrage' ohne Text bekomme. Ich folge der Beschreibung auf http://msdn.microsoft.com/de-us/library/ms733766.aspx, die im Kommentar angibt, dass die resultierende URL in Ihr Beispiel übersetzt werden würde - http: //localhost/wcfcert/service1.svc/test. Es funktioniert auch nicht für mich. –

+0

Die URL funktioniert nicht in IE (.../Service1.svc/test). Aber Proxy erstellen fügen Sie den gleichen Endpunkt, der es funktioniert. Siehe http://msdn.microsoft.com/en-us/library/ms751515(v=vs.110).aspx –

Antwort

2

Es wäre tatsächlich:

http://localhost/wcfcert/service1.svc/test

Wenn Sie die URL wollen 'http://localhost/wcfcert/test/service1.svc' sein, dann werden Sie brauchen, um Geben Sie die vollständige URL im Adressattribut an.

+0

Ich habe beide versucht, jetzt bekomme ich 'HTTP 400 Bad Anfrage.' –

+0

@Keivan: Für die zweite Option, haben Sie Adresse = "http: //localhost/wcfcert/test/service1.svc" festgelegt, oder lassen Sie es einfach bei Adresse = "Test"? Wenn Sie möchten, dass die URL http: //localhost/wcfcert/test/service1.svc lautet, müssen Sie sicherstellen, dass Sie die vollständige Adresse im Adressattribut angeben. – jrista

+0

Ich habe versucht sowohl "localhost/wcfcert/test/service1.svc" und "localhost/wcfcert/service1.svc/test" –

0

Ich stieß vor kurzem auf ein ähnliches Problem, und ich glaube, der Grund ist, weil der WcfTestClient erfordert, dass der Endpunkt mex die Metadaten für den Service abfragt, den er testet. Wenn Sie dem WcfTestClient die Dienstadresse "http://localhost:1523/Service1.svc" hinzufügen, fragt er den Endpunkt "http://localhost:1523/Service1.svc/mex" ab, um die Dienstbeschreibung abzurufen.

Der Fehler „Kann nicht Metadaten erhalten von "http://localhost:1523/Service1.svc/test" angezeigt, da die WcfTestClient für den sucht‚/ test/mex‘Endpunkt die Metadaten für den Dienst an, um‚/ test‘.

Um dies zu beheben, Sie müssen, um einen anderen Endpunkt hinzufügen Metadaten über den Dienst an der Adresse gehostet zur Verfügung zu stellen „/ test“:..

<endpoint address="/test/mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 

Dies ist die Lösung, die für mich gearbeitet

Verwandte Themen