Как перехватить ответ HTTP 404 при загрузке файла, если размер файла превышает лимит? - PullRequest
0 голосов
/ 05 октября 2011

У меня есть веб-сайт MVC3, который позволяет пользователям загружать изображения. Если пользователь пытается загрузить изображение, которое превышает допустимое значение в моем файле web.config, ему выдается 404 ответа. Я использую элемент управления FileUpload. Пользователь получает ответ 404, когда он отправляет форму, и файл слишком велик.

Вот статья , в которой обсуждается, как решить проблему, но только объясняется, как увеличить максимальный размер файла. Я не хочу увеличивать размер, а хочу дать пользователю дружеское сообщение, когда они это сделают.

Я бы хотел перехватить этот ответ, прежде чем он вернется, поэтому я могу дать им дружеское сообщение, объясняющее, почему они не могут загрузить файл.

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Выдается исключение, которое вы можете получить во время события Application_Error в global.asax?

Я не уверен, что именно этот конкретный элемент управления FileUpload упоминается вами, но с простым приложением MVC3,когда я загружаю файл, веб-сервер Visual Studio («cassini») отвечает с ошибкой 504.Каркас создает исключение HttpException, когда загружаемый файл слишком велик.Вы можете поймать это так:

protected void Application_Error()
        {
            var ex = Server.GetLastError();

            if (ex.Message == "Maximum request length exceeded.")
            {
                //respond another way.
            }
        }

Эта статья является хорошим справочным материалом для опасностей при загрузке больших файлов: http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

0 голосов
/ 20 марта 2013

См. Этот ответ, он добавляет проверку ответа перед каждым ответом, но он работает: https://stackoverflow.com/a/15532171/1033228

Кроме того, вам не нужно увеличивать максимальный размер загрузки (превышающий желаемый максимум), тем самым открывая себя для атак DOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...