IPC Remoting проблема - PullRequest
       15

IPC Remoting проблема

2 голосов
/ 13 марта 2009

Мы получаем следующую ошибку при использовании IPC.
«Не удалось подключиться к порту IPC: система не может найти указанный файл». Эта проблема возникает на сервере Windows 2003.

Конечно, это происходит только в производстве. Мы не можем воспроизвести это в нашей среде разработки.

Служба Windows, которая пытается использовать IPC, работает как локальная система.

Есть ли какое-то разрешение, которое нужно изменить?

Ответы [ 4 ]

1 голос
/ 09 января 2013

У нас была эта проблема в рабочем коде. Сбой на небольшом проценте систем пользователя.

Ошибка оказывается в коде Microsoft, который мы использовали. Он генерирует канал IPC, используя имя пользователя.

IPC: // APP_USER_000: SingeInstanceIPCChannel / SingleInstanceApplicationService

с определенными символами в имени пользователя, это генерирует недопустимый URL-адрес канала, поэтому принимающее приложение не может сначала создать канал.

наше исправление заключается в использовании хэша имени пользователя, а не первых символов в имени пользователя.

(мы использовали код здесь: http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx)

1 голос
/ 07 апреля 2009

Мы пытались получить доступ к каналу до его запуска. Таким образом, мы получили бы ошибку «not found». Обертывание кода доступа в некоторый код «действительно ли он готов» решило проблему.

1 голос
/ 02 января 2013

Для меня ДТА работал нормально. Но внезапно я начал получать ту же ошибку.

Для меня исправление было так:

-> Go To Task Manager
-> Go To Processes Tab
-> Find and kill the DTA process. For me this process is named as 'DTASHELL.exe'

Теперь попробуйте запустить DTA. Теперь должно работать: -)

0 голосов
/ 30 марта 2009

Пожалуйста, опубликуйте код, который вы используете для инициализации канала сервера и публикации объекта, и код клиента с URI, который вы используете при попытке доступа к удаленному объекту.

Типичной ошибкой является то, что вы инициализируете канал словарем и устанавливаете название канала с помощью

dic["name"] = "channelName";  
//used for retrieving the channel - ChannelServices.GetChannel("channelName");

вместо

dic["portName"] = "channelName";
//used as the identifier for the named pipe - 
//The client should get the object from the uri : ipc://channelName/objectName
...