我的主要问题是,当上传的文件超过允许的大小(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相关问答推荐

JWT 和 Google 在 Razor 页面中进行身份验证和授权

检测 ASP.NET 中的内存泄漏

如何从 dll 文件中提取类的源代码?

格式化 DataBinder.Eval 数据

为 Web 请求实现速率限制算法的最佳方法是什么?

如何使用文件上传控件 Select 多个文件?

HttpWebRequest 未通过凭据

ASP.NET IIS - 请求何时排队?

如何使用 ASP.Net MVC 路由来路由图像?

上传时验证大文件

VirtualPath 在当前应用程序根目录之外

Asp.net Identity 密码哈希

对于每个请求,RestClient 应该是单例还是新的

带有完整内存错误的 WCF 服务(内存门判断失败,因为可用内存) - 如何解决

在 ASP.NET 中使用 Messenger Connect 客户端库时出现 Javascript 错误

在生产中使用 LocalDb 是否正常?

Html.RenderAction 和 Html.Action 的区别

当文件上传超出 ASP.NET MVC 中允许的大小时显示自定义错误页面

解析器错误:此处不允许使用_Default,因为它没有扩展类System.Web.UI.Page和 MasterType 声明

将Bundle 包添加到现有的 ASP.NET Webforms 解决方案