Tôi có dịch vụ WCF mà tôi đang cố định cấu hình để nó hiển thị 2 điểm cuối, tham khảo các chức năng khác nhau, trong các URL khác nhau.Dịch vụ WCF phơi bày 2 điểm cuối trên 2 hợp đồng dịch vụ khác nhau
Những gì tôi muốn có là Service1, phơi bày các phương pháp A, B, C, và Service2, phơi bày các phương pháp D, E. Tôi muốn để có thể duyệt cả localhost/WebServiceName/Service1/Dịch vụ .svc và localhost/WebServiceName/Service2/Service.svc.
Các ứng dụng khác tham khảo localhost/WebServiceName/Service1/Service.svc nên chỉ thấy giao diện có chứa các phương pháp A, B và C. Họ không nên nhìn thấy bất cứ điều gì liên quan đến giao diện Service2. Và đối với Service2 tương tự.
Cho đến nay tôi đã xác định hai giao diện trong dịch vụ WCF của mình, I_Service1 và I_Service2.
tôi đã bổ sung thêm hai điểm cuối trong web.config của tôi như vậy:
<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" />
Các gợi ý của việc sử dụng địa chỉ đầy đủ trong enpoint xuất phát từ đây: Multiple endpoints under IIS
Nhưng vẫn còn, tôi không thể duyệt localhost/WebServiceName/Service1/Service.svc. Tôi nhận:
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.
tôi thành công có thể duyệt localhost/WebServiceName/Service.svc và wsdl bao gồm các phương pháp A, B, C, D, E. Nhưng điều này nên sai trong hành vi của tôi muốn.
Có điều gì đó mà tôi đã bỏ lỡ không?
CẬP NHẬT: Theo bài viết này http://allen-conway-dotnet.blogspot.ro/2011/09/exposing-multiple-binding-types-for.html Tôi đã tạo hai dịch vụ hợp đồng khác nhau cho các điểm cuối đó. Nhưng hiện tại tôi chỉ đang nắm giữ Service1 khi tôi duyệt qua. Service2 dường như không tồn tại (các lỗi liên quan đến lỗi HTTP 404 xuất hiện).
Cấu hình trông giống như:
<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>
Không có gì sai khi nêu rõ các bước rõ ràng; hầu hết thời gian họ là những người chúng ta quên. Tuy nhiên, câu hỏi của tôi là về cách cấu hình một Dịch vụ Web với 2 điểm cuối, không phải hai Dịch vụ Web khác nhau. Ngoài ra, phần cấu hình là về những gì nên được cấu hình trong Web.config Web Service đó, không phải trong web.config hoặc app.config của các ứng dụng tham chiếu nó. –