9

我的页面,当我尝试上传一个大文件(超过 10MB)时显示我:

您要查找的资源已被删除、名称已更改或暂时不可用。

我的 web.config 有这个

<httpRuntime requestValidationMode="2.0" maxRequestLength="15000" />

<customErrors mode="RemoteOnly" defaultRedirect="~/Errorhandling.aspx">
      <error statusCode="404" redirect="~/NotFound.html" />
       <error statusCode="413" redirect="~/TooBig.html" />
</customErrors>

为什么它不将我重定向到 TooBig.html 而不是显示上述消息?

笔记

默认的 ASP.NET 允许为 4MB,这就是我将其maxRequestLength更改为 15000 的原因。(此时将其更改为 150000 没有任何区别,因为我只测试最大 10MB)

4

3 回答 3

1

使用 .NET 4.x 测试

无法在 web.config 中处理此错误,因为它级别太高。

您可以像这样在 global.asax 中捕获此错误:

Protected Sub Application_EndRequest(sender As Object, e As System.EventArgs)

    Dim context As HttpContext = HttpContext.Current.ApplicationInstance.Context
    If Not IsNothing(context) Then

        If Not context.Response.StatusCode = HttpStatusCode.OK Then

            'Detect file upload exceeded max length:
            If context.Response.StatusCode = 404 And
                context.Response.SubStatusCode = 13 Then

                'clear the previous error page content:
                context.Response.Clear()

                'redirect to your custom upload error page:
                context.Server.Transfer("~/error.aspx?code=404.13", False)

            End If

        End If

    End If

End Sub
于 2013-03-16T10:05:12.607 回答
1

我在使用不同大小的文件迁移到 IIS7 时遇到了这个问题。但是当时下面的解决方案对我有用。您应该将这些部分添加到您的 webconfig 或 appconfig 文件中,具体取决于您想要的范围。

<system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="524288000"/>
            </requestFiltering>
        </security>
</system.webServer>

有关更多信息,您可以查看。

http://www.webtrenches.com/post.cfm/iis7-file-upload-size-limits

于 2013-03-14T22:17:29.550 回答
1

以下代码可能会有所帮助:

<httpRuntime enableVersionHeader="false" executionTimeout="300000" maxRequestLength="256000" requestValidationMode="2.0" requestLengthDiskThreshold="256000" />
于 2013-11-13T09:42:14.553 回答