我已经使用 HTTP POST 在网络摄像机 (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 窗口已满”标记数据包,然后是一系列 ZeroWindow 和 Keep-Alive 消息。最终连接被重置,摄像头记录了来自服务器的 500 响应。
关于我做错了什么的任何想法?类似问题的其他答案提到 SaveAs 是一种保存到文件的方法,但我读到的其他问题都没有提到 wireshark 问题。
相机日志样本:
11/02/2012 11:38:35 HTTP-POST:Failed to post file [HTTP error code: 500].
11/02/2012 11:38:03 Alert: Detected motion.
Wireshark 日志中的部分 HTTP header :
POST /PFDemo/MotionDetectAttachment.aspx?cameraID=1 HTTP/1.0
Host: {correct host IP}
Content-Type: video/mp4
Content-Length: 158689
Authorization: Basic
Connection:close
X-EventInfo: motion,71,md_window3
(X-EventInfo 值来自相机)
最佳答案
您是否更改了 maxRequestLength 和 executionTimeout 的默认值?即使你有,你可能仍然有问题。
Jon Galloway 写了一篇 excellent article对此。
maxAllowedContentLength 也发挥了作用。 this SO question的答案可能有帮助。
关于c# - 如何在 C# 中从 POST 正文中保存视频/MP4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202431/