Я пишу службу Windows с сопровождающим «средством определения состояния». Служба содержит WCF с именем pipe endpoint для межпроцессного взаимодействия. Через именованный канал инструмент состояния может периодически запрашивать службу для последнего «статуса».WCF NamedPipe CommunicationException - «Труба завершена (109, 0x6d)».
На моей машине развития, у меня есть несколько IP-адресов; одна из них - «локальная» сеть с адресом 192.168.1.XX. Другая - «корпоративная» сеть с адресом 10.0.X.XX. Служба Windows собирает многоадресный трафик UDP на одном IP-адресе.
Служба Windows до сих пор работала нормально, пока она использует адрес 192.168.1.XX. Он постоянно сообщает статус клиенту.
Как только я перешел на другой, «корпоративный» IP-адрес (10.0.X.XX) и перезапустить службу, я получаю сплошные «CommunicationExceptions» при получении статуса:
"There was an error reading from the pipe: The pipe has been ended. (109, 0x6d)."
Теперь, Я не думаю, что IP-адрес U утверждаемого клиента должен иметь какое-либо отношение к функциональности интерфейса Named-Pipe; они являются полностью отдельными частями приложения!
Вот соответствующий WCF конфигурация разделы:
//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();
Я не думаю, что это вопрос «разрешение» - я бег клиента с правами администратора - но, возможно, есть некоторая область конкретных причины это сломалось?
Как выглядит трассировка стека исключений? Вы уверены, что ничего не изменилось? Вы перезапустили инструмент состояния после переключения конфигурации службы? Не могли бы вы разместить часть кода Status Tool, которая создает экземпляр вашего rpoxy и вызывает вызов WCF? –
Я обновлю вопрос в понедельник, когда вернусь к работе.Друг также предположил, что IP-адрес может быть красной селедкой, и реальная разница может быть возвратной величиной конкретных Enums. Я также исследую это. – BTownTKD