Ich habe einen WCF-Dienst, den ich zu konfigurieren versuche, so dass er 2 Endpunkte unter Bezug auf verschiedene Funktionen unter verschiedenen URLs verfügbar macht.WCF-Dienst mit 2 Endpunkten bei 2 verschiedenen Serviceverträgen
Was ich haben will ist Dienste1, Methoden A aussetzt, B, C und Service2, Belichtungsverfahren D, E. Ich möchte sowohl durchsuchen können localhost/Webservice/Dienste1/Dienstleistung .svc und localhost/WebServiceName/Service2/Service.svc.
Andere Anwendungen Referenzierung localhost/Webservice/Dienste1/Service.svc sollte nur die Schnittstelle sehen, die Methoden A, B und C. Sie sollten nicht sehen, etwas in Bezug auf Service2 Schnittstelle. Und für Service2 ebenfalls.
Bisher habe ich definiert zwei Schnittstellen in meinem WCF-Dienst, I_Service1 und I_Service2.
Ich habe zwei Endpunkte in meinem web.config hinzugefügt wie so:
<endpoint address="http://localhost/WebServiceName/Service1/" binding="wsHttpBinding" contract="WebServiceName.I_Service1" bindingConfiguration="Binding1" />
<endpoint address="http://localhost/WebServiceName/Service2/" binding="wsHttpBinding" contract="WebServiceName.I_Service2" bindingConfiguration="Binding2" />
Der Vorschlag in der enpoint vollständige Anschrift des Verwendens von hier kommt: Multiple endpoints under IIS
Aber dennoch kann ich nicht durchsuchen localhost/WebServiceName/Service1/Service.svc. Ich erhalte:
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
ich erfolgreich localhost/Webservice/Service.svc und die WSDL-Datei enthält ein Verfahren blättern, B, C, D, E. Dies sollte aber im Verhalten falsch ich will.
Gibt es etwas, das ich verpasst habe?
UPDATE: Nach diesem Artikel http://allen-conway-dotnet.blogspot.ro/2011/09/exposing-multiple-binding-types-for.html habe ich zwei verschiedene Vertragsdienste für diese Endpunkte erstellt. Aber momentan bin ich nur Service1, wenn ich es suche. Service2 ist anscheinend nicht vorhanden (Probleme mit HTTP 404-Fehlern werden angezeigt).
Die Konfiguration sieht so aus:
<services>
<service behaviorConfiguration="WebServiceName.ServiceBehavior1" name="WebServiceName.Service1">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
contract="WebServiceName.I_Service1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/WebServiceName/Service1/Service.svc" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="WebServiceName.ServiceBehavior2" name="WebServiceName.Service2">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
contract="WebServiceName.I_Service2" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/WebServiceName/Service2/Service.svc" />
</baseAddresses>
</host>
</service>
</services>
Es ist nichts falsch daran, offensichtliche Schritte zu sagen; die meiste Zeit sind sie diejenigen, die wir vergessen. Nichtsdestotrotz geht es in meiner Frage darum, wie man einen einzelnen Web-Service mit zwei Endpunkten konfiguriert, nicht mit zwei verschiedenen Web-Services. Der Konfigurationsteil beschreibt außerdem, was in diesem Webdienst web.config, nicht in der Datei web.config oder app.config von Anwendungen, die darauf verweisen, konfiguriert werden sollte. –