2011-02-11 42 views
1

名前付きパイプ経由でサーバーに接続するクライアントを作成しましたが、サーバーで正常に動作します。ただし、リモートサーバーに接続しようとすると、Connect()を呼び出して「要求がサポートされていません」という例外がスローされ、その意味がわかりません(msdnを探してみました。.NETの名前付きパイプとあいまいな例外に問題がある

これは関連するコードです。私はサーバーとパスが存在すると確信しています。なぜなら、別のクライアント(ソースは見えませんが、nxpipeを使用しています)が接続できるからです。

NamedPipeClientStream stream = new NamedPipeClientStream(serverName, pipeName, PipeDirection.InOut); 
stream.Connect(timeout); 

誰もが意味するものはありますか?

ありがとうございました。

EDIT(SOLVED): あなたは問題が何かを信じることはありません。最初に、アプリケーションを注文した人は、サーバーアプリケーションを実行してパイプを開くのを忘れてしまったので、パイプがリモートマシンで開かれていると仮定して、何が起こっているか把握するのに何時間も費やしました。彼はサーバーアプリを実行するのを忘れた(数日後)ことを覚えた後、私たちはまだ問題を抱えていました。その時点で、私は既に.NETパイプとCreateFileを使ってネイティブパイプを使ってクライアントを書いていました。この男はパイプの全体の名前(無効なパイプ名のために "サポートされていない"という奇妙なもの)を教えてくれたことも忘れてしまった。幸いなことに、先ほど使用したアプリケーションがありましたが、パイプ名の一部がハードコードされていました(そしてその一部を指定する必要がありました)ので、プロセスエクスプローラを使用してパイプのフルネームを調べ、今それは働く:|

+0

これを考慮しましたか? 「Windows XP ProfessionalとWindows 2000 Serverの場合、最大10本のパイプを同時にネットワークに接続できます。 (ソースhttp://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeclientstream.aspx) – DaeMoohn

+0

例外スタックトレースとは何ですか?クライアントとサーバーはどのOSプラットフォームですか? –

+0

残念ながら、今はオフィスにいませんので、スタックトレースを与えることはできませんが、例外はNamedPipeClientStream.Connect()からスローされます。また、クライアントは32ビットのWindows 7上でC#で書かれた小さなアプリケーションであり、サーバーは遠く離れた天秤座のメインフレームです。 – fingerprint211b

答えて

1

これはWin32 IO例外(ERROR_NOT_SUPPORTED - エラーコード50)である必要があります。そうであれば、名前付きパイプ通信があるマシンから別のマシンへと遠隔されるRPC/SMBプロトコルから来るでしょう。これは、一方の側が他方の側でサポートされていないプロトコル操作を呼び出そうとしていることを意味します。

あなたの文脈では、名前付きパイプ通信を開始しようとしているセキュリティコンテキストが、相手側でサポートされているセキュリティコンテキストと互換性がないことを意味します(または、プロトコルレベル)。

両側がWindowsマシンの場合、開始側のセキュリティコンテキストが相手側のIPC $共有への接続を確立できるかどうかを確認することから始めます。私は天秤座のメインフレームについて何の知識もなく、これがどのような違いをもたらすのかも知りません。

1

名前付きパイプは現在のマシン内にのみ存在します。 TCPのようなものを使用してマシン境界を越える必要があります。

EDIT:

補正thisによれば、ネットワークを介して可能です。私は誤解されているはずですが、おそらくデフォルトの動作はNT AUTHORITY\NETWORKへのアクセスが拒否されていることです。

+0

マイクロソフトサイトから: "名前付きパイプは、パイプサーバーと1つ以上のパイプクライアント間の通信に一方向または2重パイプを提供します。複数のNamedPipeClientStreamオブジェクト すべてのプロセスは、名前付きパイプサーバーまたはクライアント、またはその両方として動作できます。 Link:http://msdn.microsoft.com/en-us/library/system.io.pipes.namedpipeclientstream.aspx – DaeMoohn

+0

@DaeMoohn:私もそれを読んでいました。あなたのコメントを見たときに更新に戻ってきました。ありがとう! –

+0

WCF名前付きパイプのみがマシンの境界を越えることができません。 – DaeMoohn

関連する問題