C# で HTTP 要求を使用してビデオ デバイス (エンコーダー) をリモート コントロールするための単純な (コンソール) アプリケーションを作成しています。XML データをデバイスに送信する必要があり、デバイスは XML データを送信して応答します。
このリクエストを行うために使用しているコードは次のとおりです: http://pastebin.com/59CXR3m9
このコードをテストしようとすると、リクエストが作成され、ストリームが書き込まれます。フラグは期待どおりに表示されます"stream created"
が、何も起こりません。特定の短いタイムアウト (たとえば 5 秒) を使用している場合でも、アプリケーションがスタックしているように見えます。
これをトラブルシューティングするために、System.Net
トレース ログを有効にしました。WebException
aが によってスローされることがわかりましたGetRequestStream
が、1 つの理由から、この例外はコード内のによってキャッチされません。try/catch
例外は次のとおりです。
System.Net Error: 0 : [1344] Exception in the HttpWebRequest#44223604:: - The underlying connection was closed: The connection was closed unexpectedly.
オンデマンドで完全なトレースを送信できます。
また、コールスタックで別のトレースを行い、例外がスローされたことを示していますGetRequestStream
: http://pastebin.com/vE5QZGBe
このコードを別のデバイスでテストしたところ、問題なく動作したため、これもデバイス関連ですが、その例外がキャッチされない理由はわかりません。そして、これは本番環境の状況になる可能性があるため、コードはこれを正しく処理できる必要があります (応答を際限なく待機する必要はありません)。
誰かがすでにこの種の行動をとっていましたか?どんな提案でも大歓迎です:)
ありがとう!
参考までに: 成功したリクエストの痕跡もあります。