Mam usługę WCF, którą próbuję skonfigurować, aby udostępnić 2 punkty końcowe, odnoszące się do różnych funkcji pod różnymi adresami URL.Usługa WCF prezentująca 2 punkty końcowe na 2 różnych umowach serwisowych
Co chcę mieć jest Service1, odsłaniając metody A, B, C i Usługa2, odsłaniając metody D, E. Chcę móc przeglądać zarówno localhost/WebServiceName/Service1/Serwis .svc i localhost/WebServiceName/Service2/Service.svc.
Inne aplikacje odwoływania się localhost/WebServiceName/Service1/Service.svc powinni zobaczyć tylko interfejs zawierający metody A, B i C. Nie powinno się zobaczyć coś odnośnie Usługa2 interfejsu. I tak samo dla Service2.
Do tej pory zdefiniowane dwa interfejsy w moim usług WCF, I_Service1 i I_Service2.
Dodałem dwa punkty końcowe w moim web.config tak:
<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" />
Propozycja wykorzystania pełnego adresu w enpoint pochodzi stąd: Multiple endpoints under IIS
ale nadal nie mogę przeglądać localhost/WebServiceName/Service1/Service.svc. Otrzymuję:
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.
mogę z powodzeniem przeglądać localhost/WebServiceName/Service.svc i WSDL zawiera metody A, B, C, D, E. Ale to powinno być złego w zachowaniu chcę.
Czy jest coś, co przegapiłem?
AKTUALIZACJA: Po tym artykule http://allen-conway-dotnet.blogspot.ro/2011/09/exposing-multiple-binding-types-for.html Stworzyłem dwie różne usługi kontraktowe dla tych punktów końcowych. Ale obecnie przeglądam tylko Service1. Najwyraźniej usługa Service2 (pojawiają się problemy związane z błędem HTTP 404).
konfiguracja wygląda następująco:
<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>
Nie ma nic złego w stwierdzeniu oczywistych kroków; przez większość czasu są tymi, których zapominamy. Niemniej jednak, moje pytanie dotyczy tego, jak skonfigurować pojedynczą usługę sieci Web z 2 punktami końcowymi, a nie dwoma różnymi usługami sieciowymi. Również część konfiguracyjna dotyczy tego, co powinno być skonfigurowane w tym Web.config Web Service, a nie w pliku web.config lub app.config aplikacji, które go odwołują. –