如何在C#中保存POST主体的视频/ MP4

时间:2012-11-02 20:15:55

标签: c# asp.net

我已使用HTTP POST在IP摄像机(Sercomm RC8021)上设置了运动检测。在检测到动作时,摄像机启动HTTP POST,在帖子正文中附加MP $视频。我有一个ASP.NET页面,其中C#代码隐藏试图保存文件:

    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问题。

相机日志示例:

  

11/02/2012 11:38:35 HTTP-POST:无法发布文件[HTTP错误代码:500]   11/02/2012 11:38:03提醒:检测到动作。

Wireshark日志的部分HTTP标头:

  

POST /PFDemo/MotionDetectAttachment.aspx?cameraID=1 HTTP / 1.0
  主持人:{正确的主机IP}
  内容类型:video / mp4
  内容长度:158689
  授权:基本
  连接:关闭
  X-EventInfo:motion,71,md_window3

(X-EventInfo值来自相机)

1 个答案:

答案 0 :(得分:0)

您是否更改了maxRequestLength和executionTimeout的默认值?即使你有,你可能仍有问题。

Jon Galloway在此写了excellent article

maxAllowedContentLength也发挥了作用。 this SO question的答案可能会有所帮助。