そこで今日、 SSHNet APIを介してリモート ホストへの SFtp 接続を作成しようとしました。クイック アンド ダーティ コンソール アプリケーションでのテストは非常にうまく機能しましたが、機能を追加する必要があるプロジェクトでビルドされた DLL を参照すると、DLL が例外をスローしていました。
プロジェクトをデバッグすると、例外はソケット接続 (または接続機能の開始) にあることが判明しました。
ソケット操作で、デッド ネットワークが検出されました。
前に述べたように、別のプロジェクトで同じパラメーターを使用してまったく同じサーバーに接続すると、問題なく動作しました。
プロジェクト/ソリューション構成を確認しました。サーバー名とその他のパラメーターを慎重に確認し、特定のプロジェクトでは (サーバーに関係なく) 常に失敗するが、(新しい) プロジェクトでは機能するテストケースを作成しました。
var ep = new IPEndPoint(IPAddress.Parse(IPAdres),Port);
var sock = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
// Connect socket with specified timeout
var connectResult = sock.BeginConnect(ep, null, null);
if (!connectResult.AsyncWaitHandle.WaitOne(180, false))
{
throw new Exception("Timeout");
}
sock.EndConnect(connectResult);
しかし、これは奇妙な例のようには思えません。プロジェクト固有の方法でこの種のエラーを経験した人はいますか? 足りないものはありますか?
ありがとう、