Tôi đang cố định cấu hình ràng buộc net.pipe trên máy chủ giữa 2 quy trình (trên cùng một hộp). Tôi có tất cả điều này làm việc cục bộ trong Windows 7, nhưng trên máy chủ sản xuất (Windows Server 2008 R2), nó không hoạt động.Không thể kết nối net.pipe hoạt động trong IIS7.5 trên Windows Server 2008 R2
tôi có thể xác minh rằng tôi có:
- Added một net.pipe ràng buộc vào IIS "trang web" (thêm * là thông tin).
- Đã thêm net.pipe vào danh sách các liên kết trong "cài đặt nâng cao" cho IIS "Web Site".
Đó là tất cả những gì được yêu cầu trên máy tính của tôi. Tôi có cần làm gì khác không?
Các lỗi tôi nhận được là từ một đơn giản khách hàng giao diện điều khiển thử nghiệm ứng dụng:
Unhandled Exception: System.ServiceModel.EndpointNotFoundException: Không có điểm cuối nghe tại net.pipe: //nameOfService.svc mà có thể chấp nhận thông điệp. Điều này thường được gây ra bởi một địa chỉ không chính xác hoặc hành động SOAP. Xem InnerException, nếu có, để biết thêm chi tiết. ---> System.IO.PipeException: Các thiết bị đầu cuối đường ống 'net.pipe: //nameOfService.svc' không thể được tìm thấy trên machine.` địa phương của bạn
Dưới đây là một số configs:
Chủ đầu tư:
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_IWebAppNotifyService">
<security mode="None" />
</binding>
</netNamedPipeBinding>
</bindings>
<client>
<endpoint address="net.pipe://nameOfService.svc"
binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IWebAppNotifyService"
contract="ServiceReference2.IWebAppNotifyService" name="NetNamedPipeBinding_IWebAppNotifyService" />
</client>
</system.serviceModel>
server:
<bindings>
<netNamedPipeBinding>
<binding name="WebAppNotifyServiceBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
</security>
</binding>
<binding name="ScannerManagerCommandBinding">
<security mode="None" />
</binding>
</netNamedPipeBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="WebAppNotifyServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MonitoringApp.Notifier.WebAppNotifyService" behaviorConfiguration="WebAppNotifyServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.pipe://nameOfService.svc" />
<add baseAddress="http://nameOfService" />
</baseAddresses>
</host>
<endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="WebAppNotifyServiceBinding" contract="X.Y.IWebAppNotifyService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
cập nhật:
012.Nhóm ứng dụng được kết hợp với trang web lưu trữ ràng buộc net.pipe đang chạy trong người dùng "NetworkService", nếu điều đó tạo ra sự khác biệt.
tôi đã cho phép kích hoạt Non-HTTP dưới Tính năng Windows cho NET 3.5.1, mặc dù điều này đang chạy dưới .NET 4.
Trong các tính năng của Windows, bạn đã bật Windows Communication Foundation Non-HTTP Activation chưa? –
Bạn đã cố gắng sử dụng WCFTestClient.exe công cụ để kiểm tra dịch vụ của bạn? –
Một suy nghĩ khác - như tôi nhớ lại, baseAddress phải tuân theo định dạng sau: {PROTOCOL}: // SERVER_NAME/SERVICE_NAME, tôi có đúng không? –