Я написал клиент, который подключается к серверу через именованный канал, и отлично работает с моим сервером. Однако, когда я пытаюсь подключиться к удаленному серверу, он терпит неудачу, когда я вызываю Connect(), и бросает запрос «Запросить не поддерживаемое исключение», и я понятия не имею, что это значит (попробовал посмотреть на msdn, не помог).Проблемы с именами .NET с именами и неоднозначными исключениями
Это соответствующий фрагмент кода. Я уверен, что сервер и путь существуют, потому что к нему может подключиться другой клиент (источник которого я не вижу, но я знаю, что он использует nxpipe).
NamedPipeClientStream stream = new NamedPipeClientStream(serverName, pipeName, PipeDirection.InOut);
stream.Connect(timeout);
Есть ли у кого-нибудь идеи, что это значит?
Спасибо.
EDIT (SOLVED): Вы НЕ ВЕРИТЕ, в чем проблема. Во-первых, парень, который заказал приложение, забыл запустить приложение-сервер и открыть трубку, поэтому мы потратили часы, пытаясь понять, что происходит, предполагая, что труба открыта на удаленной машине. После того, как он вспомнил, что он забыл запустить серверное приложение (несколько дней спустя), у нас все еще были проблемы. В этот момент я уже написал клиента, используя .NET-каналы и собственные каналы, используя CreateFile. Оказывается, парень также забыл рассказать нам все имя трубы (тем не менее, мы получили «запрос не поддерживается» для недопустимого имени трубы). К счастью, у нас было приложение, которое они использовали ранее, в котором было указано имя этого жесткого диска (и его часть, которую вы все еще должны были указать), поэтому мы использовали обработчик процессов, чтобы выяснить полное имя канала и, наконец, подключиться. Теперь он работает: |
Вы приняли это во внимание? «Для Windows XP Professional и Windows 2000 Server одновременно можно подключить до 10 каналов одновременно через сеть». (источник http://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeclientstream.aspx) – DaeMoohn
Какова трассировка стека исключений? Какая платформа (ы) ОС - ваш клиент и ваш сервер? –
К сожалению, я сейчас не в офисе, поэтому я не могу дать вам трассировку стека, но могу вам сказать, что исключение выбрано из NamedPipeClientStream.Connect(). Кроме того, клиент представляет собой небольшое приложение, написанное на C# в 32-битном Windows 7, а сервер - это мейнфрейм Libra далеко далеко. – fingerprint211b