Как узнать, что текущий запрос превышает maxRequestLength в ASP.Net?

Я разрабатываю небольшое веб-приложение в ASP.Net (версия фреймворка 3.5), используя VS2008 и С# 3.0. Идет загрузка файла, и я хочу убедиться, что весь запрос не превышает 5 МБ.

Я настроил файл web.config, и maxRequestLength установлен правильно.

Я переопределяю метод OnError страницы.

Однако при исследовании исключения я не вижу ничего, кроме строковых литералов и кодов ошибок, которые фактически идентифицируют ошибку «Превышена максимальная длина запроса». Все, что у меня есть, это код ошибки (фактический HResult) и трассировка стека. Это также обсуждается здесь.

Это небольшая проблема, потому что реализация фреймворка может отличаться в ОС, отличной от моей: моя машина для разработки — Windows Server 2008, а целевая машина может быть Windows 2000/2003/2008 Server.

Другими словами, существует ли переносимый способ определить текущую ошибку как "Превышена максимальная длина запроса"?


person Ron Klein    schedule 01.10.2009    source источник


Ответы (1)


Я думаю, вам придется прибегнуть к решению на стороне клиента с помощью JavaScript или использовать управление загрузкой Flash/Silverlight, которое также может проверять размер файла/файлов на стороне клиента.

Потому что, когда вы используете встроенную проверку ASP.NET, очень сложно поймать это конкретное исключение. Однако вы можете отобразить удобную страницу с ошибкой, когда это произойдет.

http://www.codeplex.com/SLFileUpload

person mare    schedule 01.10.2009
comment
Это самый близкий ответ (следовательно, принятый). На самом деле, хотя это параметр web.config, именно IIS вызывает исключение. Вот почему мы должны использовать константы кодов ошибок и т. д. Однако это очень сбивает с толку. - person Ron Klein; 03.10.2009