Это было источником многих мучений для меня! Я использую глобальное ExecutionTimeout
110 секунд для своего приложения. Одна конкретная страница генерирует большое количество необработанных исключений, так как содержит элемент управления FileUpload
.
Теперь вот проблема... Я знаю, как ограничить размер файла и время ожидания выполнения в web.config, используя следующие объявления.
<httpRuntime maxRequestLength="2097152" executionTimeout="600" />
Проблема у меня вот тут:
'Check file size
Dim fileSize As Integer
Try
fileSize = FileUpload1.FileBytes.Length
Catch ex As Exception
'Display message to user...
Exit Sub
End Try
Сам процесс проверки длины файла довольно часто вызывает исключение, и это исключение не перехватывается изящно в приведенном выше try, catch
, похоже, оно зависит от обработки исключений на уровне приложения в global.asax.
Я почти уверен, что не могу проверить размер файла на стороне клиента, я не хочу постоянно увеличивать maxRequestLength
и executionTimeout
, все, что я хочу сделать, это поймать эти тайм-ауты на странице и отобразить сообщение. Это возможно?
ИЗМЕНИТЬ ---
Чтобы лучше проиллюстрировать проблему, попробуйте запустить следующий код (предполагается, что время выполнения по умолчанию равно 110 секундам).
Try
system.threading.thread.sleep(120000)
Catch ex As Exception
response.write("Error caught!!")
Exit Sub
End Try
Убедитесь, что отладка отключена. Блок catch не будет работать, и вы получите необработанную ошибку System.Web.HttpException: Request timed out
, это мне еще предстоит выяснить?
fileSize = FileUpload1.FileBytes.Length
наSystem.threading.thread.sleep(120000)
, блок catch будет проигнорирован, и вы получите необработанную ошибку выполнения. - person QFDev   schedule 22.10.2013