HTTP POST を使用して、IP カメラ (Sercomm RC8021) でモーション検出をセットアップしました。動きを検出すると、カメラは HTTP POST を開始し、投稿本文に MP$ ビデオを添付します。ファイルを保存しようとする C# コード ビハインドを含む ASP.NET ページがあります。
protected void Page_Load(object sender, EventArgs e)
{
String filename = "~/MotionDetectAttachment.mp4";
this.Context.Request.SaveAs(Server.MapPath(filename), false);
}
問題は、サーバーが HTTP 500 コードをカメラに送り返し、ファイルが保存されないことです。Wireshark を使用すると、Wireshark が「TCP Window Full」でパケットにタグを付け、その後に一連の ZeroWindow および Keep-Alive メッセージが続くまで、通信は問題ないように見えます。最終的に接続がリセットされ、カメラはサーバーからの 500 応答をログに記録します。
私が間違っていることについてのアイデアはありますか?同様の質問に対する他の回答は、SaveAs がファイルに保存する方法であることに言及していますが、私が読んだ他の質問のどれも、wireshark の問題について言及していませんでした。
カメラ ログのサンプル:
2012/11/02 11:38:35 HTTP-POST: ファイルの投稿に失敗しました [HTTP エラー コード: 500]。
11/02/2012 11:38:03 アラート: モーションが検出されました。
Wireshark ログの HTTP ヘッダーの一部:
POST /PFDemo/MotionDetectAttachment.aspx?cameraID=1 HTTP/1.0
Host: {正しいホスト IP}
Content-Type: video/mp4
Content-Length: 158689
Authorization: Basic
Connection: close
X-EventInfo: motion,71,md_window3
(X-EventInfo 値はカメラからのものです)