我的主要问题是,当上传的文件超过允许的大小(web.config中的maxRequestLength)时,我想显示一个自定义错误页面.

当上传大文件时,在调用控制器中的上载操作方法之前,会引发一个HttpException.这是意料之中的.

我试图在自定义属性中捕获异常,并在控制器中重写OneException.为什么不能在属性或OneException方法中捕获异常?

不过,在全局应用程序中捕获异常是可能的.尽快,但都没有react .重定向nor服务器.传输用于重定向到自定义错误页面.

有什么 idea 吗?

提前谢谢!

马库斯

推荐答案

在IIS7及以上运行时,还有另一个参数:

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

默认设置略小于30 MB.

对于大小在maxRequestLengthmaxAllowedContentLength之间的上传文件,IIS7将抛出一个HttpException,HTTP代码为500,消息文本为Maximum request length exceeded.当引发此异常时,IIS7会立即终止连接.因此,仅当在global.asax.cs的Application_Error()中处理并清除了HttpException(使用Server.ClearError())时,重定向到此错误的HttpModule才能工作.

对于大小大于maxAllowedContentLength的上载文件,IIS7将显示详细的错误页面,错误代码为404和subStatusCode 13.错误页面可在C:\inetpub\stemerr\en-US\404-13.htm中找到

对于IIS7上此错误的重定向,我建议改为在httpErrors上重定向.

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404" subStatusCode="13" /> 
    <error statusCode="404" subStatusCode="13" prefixLanguageFilePath=""
       path="http://yoursite.com/Error/UploadTooLarge" responseMode="Redirect" /> 
  </httpErrors>
</system.webServer>

Asp.net相关问答推荐

如何处理当前文件中基本文件中的S onClick方法

页面刷新后如何存储JS Select 数据

如何在 GridView 单元格中的(即
)中呈现解码的 HTML

Automapper - 映射器已初始化错误

ASP.NET GridView 第二个标题行跨越主标题行

如何在 IISExpress 上使用带有 localhost 的子域?

如何在 ASP.NET Web 窗体中使用依赖注入

将 ListItem 的 ASP.NET 列表数据绑定到 DropDownList 问题

在每个控制器的 ASP.NET WebAPI 上强制使用 CamelCase

免费的 ASP.Net 和/或 CSS 主题

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

如何解决 Kerberos 双跳问题?

Windows 运行 ASP.NET 的 IIS 替代方案

我的 asp.net mvc Web 应用程序中的 OutputCache 设置.防止缓存的多种语法

如何判断用户代理是 ipad 还是 iphone?

如何在 ASP.NET MVC 中启用跨源请求

如何从url中删除returnurl?

ASP.Net 无法创建/卷影复制

我可以在 .NET Framework 4.0 上运行 MVC 5 应用程序吗?

ASP.NET MVC NonAction 含义