捕捉“请求实体太大”的错误

我正在运行一个Web服务器IIS 8.0,并使用ASP.NET和C#。

我有一个上传框,用户可以上传一个文件到服务器上,在大约50MB的限制之后,一个信息出现在白页上:

The page was not displayed because the request entity is too large.

我想用红色的通知显示一个更方便用户的页面,上面写着“尝试上传文件时出错,请联系我们寻求帮助”。

在我的代码隐藏文件处理上传button点击事件时,我补充说:

 try { //try to save the file to server } catch(Exception ex) { //otherwise, set the asp:Label tag text to display error } 

但是, catch语句中的代码没有运行。 我的猜测是这个错误可能在于IIS,并且不能被这个声明的代码所捕获。 有什么办法来拦截这个错误,而不是显示一个友好的错误页面?

感谢您的帮助。

如果上传的文件比IIS允许的大,它将永远不会到达ASP.NET运行时,并且你的exception处理是无用的。

您应该将uploadReadAheadSize设置得远远高于您想要允许的范围,理想情况下只适用于特定的url。 然后检查代码中的上传大小并显示您自己的消息。

如果用户上传一个大于uploadReadAheadSize的大文件,他/她仍然得到IIS消息,但是这种情况下,如果你使用一个大的数字,那么它的可能性就小得多。