Tôi đang viết một Dịch vụ Windows có kèm theo "công cụ trạng thái". Dịch vụ lưu trữ WCF có tên là điểm cuối đường ống cho giao tiếp giữa các quá trình. Thông qua đường ống có tên, công cụ trạng thái có thể truy vấn định kỳ dịch vụ cho "trạng thái" mới nhất.WCF NamedPipe CommunicationException - "Đường ống đã kết thúc. (109, 0x6d)."
Trên máy phát triển của mình, tôi có nhiều địa chỉ IP; một trong số đó là mạng "cục bộ" có địa chỉ 192.168.1.XX. Cái còn lại là mạng "công ty", với địa chỉ 10.0.X.XX. Dịch vụ Windows thu thập lưu lượng phát đa hướng UDP trên một địa chỉ IP duy nhất.
Dịch vụ Windows có, cho đến bây giờ, hoạt động tốt miễn là nó sử dụng địa chỉ "192.168.1.XX". Nó liên tục báo cáo trạng thái chính xác cho khách hàng.
Ngay sau khi tôi chuyển sang bên kia, "doanh nghiệp" Địa chỉ IP (10.0.X.XX) và khởi động lại dịch vụ, tôi nhận được liên tục "CommunicationExceptions" khi lấy tình trạng:
"There was an error reading from the pipe: The pipe has been ended. (109, 0x6d)."
Bây giờ, Tôi sẽ không nghĩ rằng địa chỉ IP 'yêu cầu' của UDP Client nên có bất cứ điều gì để làm với các chức năng của giao diện Named-Pipe; chúng là những phần hoàn toàn riêng biệt của ứng dụng!
Sau đây là các WCF phần cấu hình có liên quan:
//On the Client app:
string myNamedPipe = "net.pipe://127.0.0.1/MyNamedPipe";
ChannelFactory<IMyService> proxyFactory =
new ChannelFactory<IMyService>(
new NetNamedPipeBinding(),
new EndpointAddress(myNamedPipe));
//On the Windows Service:
string myNamedPipe = "net.pipe://127.0.0.1/MyNamedPipe";
myService = new MyService(myCustomArgs);
serviceContractHost = new ServiceHost(myService);
serviceContractHost.AddServiceEndpoint(
typeof(IMyService),
new NetNamedPipeBinding(),
myNamedPipe);
serviceContractHost.Open();
tôi sẽ không nghĩ rằng đây là một vấn đề 'quyền' - Tôi đang chạy client với quyền quản trị - nhưng có lẽ có một số lý do tên miền cụ thể điều này đã phá vỡ?
Dấu vết ngăn xếp ngoại lệ trông như thế nào? Bạn có chắc chắn * không có gì khác thay đổi? Bạn đã khởi động lại Công cụ Trạng thái sau khi chuyển cấu hình dịch vụ chưa? Bạn có thể đăng một phần của mã công cụ trạng thái của bạn mà instantiates rpoxy của bạn và thực hiện cuộc gọi WCF? –
Tôi sẽ cập nhật câu hỏi vào Thứ Hai, khi tôi trở lại làm việc.Một người bạn cũng cho rằng Địa chỉ IP có thể là một cá trích đỏ, và sự khác biệt thực sự có thể là giá trị trả về của các Enums cụ thể. Tôi cũng sẽ điều tra điều đó. – BTownTKD