【问题标题】:How to save video/MP4 from POST body in C#如何在 C# 中从 POST 正文中保存视频/MP4
【发布时间】:2012-11-02 20:15:55
【问题描述】:

我已使用 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 月 2 日 11:38:35 HTTP-POST:无法发布文件 [HTTP 错误代码:500]。
2012 年 11 月 2 日 11:38:03 警报:检测到运动。

来自 Wireshark 日志的部分 HTTP 标头:

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

(X-EventInfo 值来自相机)

【问题讨论】:

  • 您使用wireshark 的诊断很酷,但是ASP.net 实际抛出了哪些异常?
  • 感谢您将我指向事件日志。由于它是一个后台进程,我没有在屏幕上得到响应,也没有想到事件日志。无论如何,事件日志显示“发生未处理的访问异常。”,这似乎是 ASP 服务帐户的简单访问问题。使用我们能够设置帐户权限的其他服务器使这项工作正常进行,并且文件被正确保存。

标签: c# asp.net


【解决方案1】:

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

乔恩·加洛韦为此写了excellent article

maxAllowedContentLength 也开始发挥作用。回复this SO question 可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多