Server.Transfer来自Global.asax Application_Error

时间:2011-06-16 13:53:36

标签: asp.net file-upload global-asax server.transfer

我继承了一些我认为不应该工作的代码:

有一个带有文件上传控件的表单,文件限制设置为默认的asp.net 4MB。

在没有使用flash / active x控件的情况下,没有真正可靠的方法在客户端测试文件大小。

所以我在我的Global.asax文件中捕获错误并将server.transfer发送到新位置。

我遇到的问题是服务器只是挂起传输,页面就在那里“加载”,进程仍然停留在Server.Transfer代码行上。

我甚至尝试过传输任何错误,但是在上传文件时它就在那里。

Server.Transfer("~/Error.aspx");

这里的任何帮助都会受到赞赏,这是一个非常大的绊脚石,我需要能够处理用户上传文件大于配置中设置的文件。没有来自框架的令人讨厌的错误。

编辑 - 看起来传输工作正常,当我进入我转移到的页面的page_load事件时,我可以按照这一点进入page_prerender,然后我得不到渲染页面和浏览器坐在那里看起来像正在加载

编辑我导致错误的已添加堆栈跟踪:

Exception = System.Web.HttpUnhandledException
Inner Exception = System.Web.HttpException
Server.GetLastError.InnerException.Message
Maximum request length exceeded.

Server.GetLastError.InnerException.StackTrace
   at System.Web.HttpRequest.GetEntireRawContent()
   at System.Web.HttpRequest.GetMultipartContent()
   at System.Web.HttpRequest.FillInFormCollection()
   at System.Web.HttpRequest.get_Form()
   at System.Web.HttpRequest.get_HasForm()
   at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
   at System.Web.UI.Page.DeterminePostBackMode()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

此外,我尝试上传的文件是12MB。 (如果有所作为)

1 个答案:

答案 0 :(得分:1)

你会使用response.redirect而不是server.transfer ....