SSLハンドシェイクの接続と開始の間に一時停止があると、リモートサーバーが接続を終了するため、HResult = 0x800704C9でSystem.Exceptionが発生します。StreamSocket.UpgradeToSslAsyncで0x800704C9エラーが認識される
await socket.UpgradeToSslAsync(SocketProtectionLevel.Tls12, socket.Information.RemoteHostName);
Windows.Networking.Sockets.SocketError.GetStatus(e.HResult)は0x800704C9コードの不明与えます。ただし、エラールックアップツールはこのコードを認識し、0x04C9/0x800704C9コードが "リモートコンピュータがネットワーク接続を拒否しました"に対応していることを示します。エラー。
ただし、CONNECTION REFUSEDには独自のコード0x274Dがあります(「ターゲットマシンが積極的に拒否したため接続できませんでした」)。 Windowsには2つのエラーコードがあり、そのうちの1つだけがSocketErrorクラスによって認識されます。
0x04C9と0x274Dのエラーの違いは何ですか?SocketError.GetStatusにはバグがありますので、これらのコードの1つのみを理解していますか?
私のコードは、発生した例外が一般的なものかネットワーク関連のものかを判断する他の方法がないため、SocketError.GetStatus!= SocketErrorStatus.Unknownに大きく依存しています(例外はThrowされるすべての例外はIOExceptionではなくSystem.Exceptionクラスです)。何かのような)。私はSocketError.GetStatusによって認識されているものを他のネットワーク関連のエラーが1日に発生することができない心配だ
..
申し訳ありませんが、わかりませんでした。これらの2つのタイプの「拒否」の違いや、なぜSocketError.GetStatusによってサポートされているのか理解できませんでした。 – Alex
@ Alex'0x800704C9'エラーはソケット操作によって発生していません。 –
"リモートコンピュータはネットワーク接続を拒否しました"というのはネットワーク操作のようですが、OutOfMemoryException、NullReferenceExceptionなどのようなものではありません。ネットワークの問題とは完全に関係なく、別の方法で処理する必要があります私のコードで処理されます)。 – Alex