Tôi có dịch vụ có thể truy cập qua http và net.pipe. Nó đang được lưu trữ trong IIS 7 (Server 2008). Tôi có thể lưu trữ các trường hợp khác nhau của dịch vụ này cho một số khách hàng trên cùng một máy và do đó HTTP được thiết lập với tên máy chủ ảo, v.v. Tất cả đều hoạt động tốt.kiểm soát tên của một đường ống được đặt tên khi lưu trữ WCF net.pipe ràng buộc trong IIS
Tôi nghĩ tôi sẽ làm tương tự cho các mạng có tên ống ràng buộc - sử dụng một số hình thức khách hàng 'virtualhostname' vào địa chỉ cơ sở ống được đặt tên, do đó cho phép tôi để truy cập các trường hợp khách hàng khác nhau với chiếc bình net.pipe khác nhau (Tôi nhận ra tên net.pipe là URN không phải của URL để chúng có thể cơ bản tùy ý nhưng Tôi nghĩ rằng tôi sẽ theo một mẫu tương tự với các địa chỉ HTTP).
Đây là web.config của tôi
<service name="Administration" behaviorConfiguration="AdministrationBehavior">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="normalWsBinding" contract="IAdministration" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="normalNetNamedPipeBinding" contract="IAdministration" />
<endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://virtualhostname.com/service" />
<add baseAddress="net.pipe://virtualhostname.com/administration/service" />
</baseAddresses>
</host>
</service>
Tuy nhiên, khi truy cập vào WSDL cho dịch vụ - địa chỉ cơ sở cho net.pipe dường như để được bỏ qua bởi IIS. Thay vào đó, tôi nhận được tên máy chủ thực của máy và địa chỉ net.pipe net.pipe URN dường như đã được định dạng hoàn toàn bởi IIS.
<wsdl:port name="NetNamedPipeBinding_IAdministration" binding="tns:NetNamedPipeBinding_IAdministration">
<soap12:address location="net.pipe://realhostname/service/Administration.svc"/>
<wsa10:EndpointReference>
<wsa10:Address>net.pipe://realhostname.com/service/Administration.svc</wsa10:Address>
<Identity>
<Spn>host/realhostname.com</Spn>
</Identity>
</wsa10:EndpointReference>
</wsdl:port>
Với không kiểm soát cách tên net.pipe được hình thành, tôi sẽ không thể phân biệt giữa nhiều trường hợp dịch vụ khách hàng trên máy tính này. Có ai có bất kỳ đầu mối như thế nào net có tên là ràng buộc ống URN có thể được kiểm soát trong môi trường IIS?
(Tôi làm rất nhiều net.pipe độc lập trong khi kiểm tra (ví dụ ServiceHost mới)()) vì vậy tôi biết rằng ràng buộc net.pipe của tôi hoạt động bên ngoài IIS và cho phép điều khiển URN được sử dụng)
Nếu không thể kiểm soát tên trong IIS - có ai có kinh nghiệm với lưu trữ và truy cập nhiều phiên bản dịch vụ net.pipe riêng biệt trên cùng một máy không?
bạn biết rằng ràng buộc net.pipe chỉ hoạt động "trên máy", ví dụ: bạn không thể truy cập chúng từ một số máy khác, ngay cả khi chúng được lưu trữ trong IIS .... –
khi lưu trữ trong IIS, bạn không thực sự chọn địa chỉ dịch vụ của mình - luôn luôn là 'http: // machinename [: port ]/virtualdir/yourservice.svc' - Tôi nghi ngờ điều tương tự cũng áp dụng cho địa chỉ net.pipe - bạn không thể kiểm soát việc đặt tên của chúng nếu được lưu trữ trong IIS .... –
Có, các điểm cuối HTTP là để truy cập off-machine, và tôi hy vọng sẽ sử dụng các điểm cuối net.pipe cho một số truy cập hạn chế (nhưng hy vọng nhanh hơn) trên máy. Khi tôi lưu trữ các điểm cuối HTTP của mình trong IIS, tuy nhiên tôi có thể chọn địa chỉ dịch vụ (ở một mức nào đó) vì tôi chỉ định miền tôi muốn sử dụng. Điều này cho phép tôi có nhiều trang IIS mỗi truy cập thông qua các url khác nhau tức là http://customer1.com/admin/Admin.svc và http://customer2.com/admin/Admin.svc Nếu tôi có thể ' t chọn địa chỉ cơ sở của tôi cho net.pipe, làm thế nào tôi có thể có nhiều ràng buộc net.pipe được lưu trữ cho các khách hàng khác nhau trong IIS? –