Server.Transfer от Global.asax Application_Error - PullRequest
1 голос
/ 16 июня 2011

Я унаследовал некоторый код, который не работает так, как мне кажется:

Существует форма с элементом управления загрузкой файлов, ограничение по умолчанию для файла установлено на asp.net 4 МБ.

Нет реального надежного способа проверить размер файла на стороне клиента без использования элементов управления 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)

Кроме того, файл, который я пытаюсь загрузить, имеет размер 12 МБ. (если это имеет значение)

1 Ответ

1 голос
/ 16 июня 2011

вы будете использовать response.redirect вместо server.transfer ....

...