【问题标题】:How can I intercept an HTTP 404 Response on file Upload when file size exceeds limit?当文件大小超过限制时,如何拦截文件上传时的 HTTP 404 响应?
【发布时间】:2011-10-05 18:47:53
【问题描述】:

我有一个允许用户上传图片的 MVC3 网站。如果用户尝试上传大于我的 web.config 中允许的值的图像,他们会收到 404 响应。我正在使用 FileUpload 控件。用户在提交表单并且文件太大时收到 404 响应。

这是一个article 讨论如何解决问题,但它只解释了如何增加文件的最大大小。我不想增加大小,而是在用户这样做时给他们一个友好的信息。

我想在它返回之前截取这个响应,这样我可以给他们一个友好的信息,解释为什么他们不能上传文件。

这可能吗?

【问题讨论】:

  • 不应该是413响应吗?
  • HTTP Error 404.13 - Not Found 请求过滤模块被配置为拒绝超过请求内容长度的请求。

标签: image asp.net-mvc-3


【解决方案1】:

在 global.asax 中的 Application_Error 事件期间是否会引发异常?

我不确定您提到的这个特定的 FileUpload 控件是什么,但是对于普通的 MVC3 应用程序,当我上传文件时,Visual Studio Web 服务器(“cassini”)会响应 504 错误。当上传的文件太大时,框架会抛出 HttpException。你可以像这样抓住它:

protected void Application_Error()
        {
            var ex = Server.GetLastError();

            if (ex.Message == "Maximum request length exceeded.")
            {
                //respond another way.
            }
        }

这篇文章很好的参考了大文件上传的危害:http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

【讨论】:

  • 我尝试了那个解决方案。我的 Application_Error() 没有受到打击。我收到此异常 HTTP 错误 404.13。我假设这是来自 IIS 而不是进入我的应用程序。我尝试从上传操作中抛出异常,但它也没有捕获到。我的全局过滤器虽然适用于我抛出的异常,但它会显示共享的错误视图。
【解决方案2】:

查看这个答案,它会在每个响应之前添加一个响应检查,但它确实有效:https://stackoverflow.com/a/15532171/1033228

此外,您无需增加最大上传大小(超过您所需的最大值),从而使自己容易受到 DOS 攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2015-01-20
    • 2020-04-20
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多