У нас есть страница загрузки изображений, время ожидания которой истекает, если загрузка пользователем занимает более 15 минут.
Мы перехватываем исключение HttpException, возникающее по истечении времени ожидания. Но как мы можем узнать, что исключение произошло из-за таймаута, чтобы мы могли вернуть конкретное сообщение?
Наш код:
try
{
// do stuff here
}
catch (HttpException ex)
{
// What can we check to know if this is a timeout exception?
// if (ex == TimeOutError)
// {
// return "Took too long. Please upload a smaller image.";
// }
return "Error with image. Try again.";
}
catch (Exception ex)
{
return "Error with image. Try again.";
}
И как выглядит ошибка тайм-аута:
System.Web.HttpException (0x80004005): Request timed out.
at System.Web.HttpRequest.GetEntireRawContent()
at System.Web.HttpRequest.GetMultipartContent()
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.EnsureForm()
at System.Web.HttpRequest.get_Form()
at MyStore.upload.ProcessRequest(HttpContext context)
ex.ErrorCode=-2147467259
ex.GetHttpCode=500
ex.WebEventCode=0
Я не решаюсь просто выполнить оператор if, который сравнивает приведенные выше коды ошибок.
HttpCode 500 кажется общим кодом внутренней ошибки сервера, который может произойти не только в случае исключения тайм-аута.
ErrorCode -2147467259 - это то, что я незнаком с. Если это число останется постоянным для ошибок тайм-аута и никогда не произойдет с исключениями, не связанными с тайм-аутом, тогда я мог бы выполнить сравнение if с этим числом.
Я думаю, что должен быть простой способ узнать, является ли HttpException исключением тайм-аута, например, что-то вроде:
if (ex == TimeoutError) // what should this be?
ОБНОВЛЕНИЕ:
Я только что попробовал перехватить TimeoutException, как показано ниже, но оно все равно перехватывается только HttpException.
try
{
// do stuff here
}
catch (TimeoutException ex)
{
// Timeout doesn't get caught. Must be a different type of timeout.
// So far, timeout is only caught by HttpException.
return "Took too long. Please upload a smaller image.";
}
catch (HttpException ex)
{
// What can we check to know if this is a timeout exception?
// if (ex == TimeOutError)
// {
// return "Took too long. Please upload a smaller image.";
// }
return "Error with image. Try again.";
}
catch (Exception ex)
{
return "Error with image. Try again.";
}
Подробнее здесь: https://stackoverflow.com/questions/335 ... pexception
Перехватить тайм-аут с помощью HttpException ⇐ C#
Место общения программистов C#
-
Anonymous
1772636840
Anonymous
У нас есть страница загрузки изображений, время ожидания которой истекает, если загрузка пользователем занимает более 15 минут.
Мы перехватываем исключение HttpException, возникающее по истечении времени ожидания. Но как мы можем узнать, что исключение произошло из-за таймаута, чтобы мы могли вернуть конкретное сообщение?
Наш код:
try
{
// do stuff here
}
catch (HttpException ex)
{
// What can we check to know if this is a timeout exception?
// if (ex == TimeOutError)
// {
// return "Took too long. Please upload a smaller image.";
// }
return "Error with image. Try again.";
}
catch (Exception ex)
{
return "Error with image. Try again.";
}
И как выглядит ошибка тайм-аута:
System.Web.HttpException (0x80004005): Request timed out.
at System.Web.HttpRequest.GetEntireRawContent()
at System.Web.HttpRequest.GetMultipartContent()
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.EnsureForm()
at System.Web.HttpRequest.get_Form()
at MyStore.upload.ProcessRequest(HttpContext context)
ex.ErrorCode=-2147467259
ex.GetHttpCode=500
ex.WebEventCode=0
Я не решаюсь просто выполнить оператор if, который сравнивает приведенные выше коды ошибок.
HttpCode 500 кажется общим кодом внутренней ошибки сервера, который может произойти не только в случае исключения тайм-аута.
ErrorCode -2147467259 - это то, что я незнаком с. Если это число останется постоянным для ошибок тайм-аута и никогда не произойдет с исключениями, не связанными с тайм-аутом, тогда я мог бы выполнить сравнение if с этим числом.
Я думаю, что должен быть простой способ узнать, является ли HttpException исключением тайм-аута, например, что-то вроде:
if (ex == TimeoutError) // what should this be?
[b]ОБНОВЛЕНИЕ:[/b]
Я только что попробовал перехватить TimeoutException, как показано ниже, но оно все равно перехватывается только HttpException.
try
{
// do stuff here
}
catch (TimeoutException ex)
{
// Timeout doesn't get caught. Must be a different type of timeout.
// So far, timeout is only caught by HttpException.
return "Took too long. Please upload a smaller image.";
}
catch (HttpException ex)
{
// What can we check to know if this is a timeout exception?
// if (ex == TimeOutError)
// {
// return "Took too long. Please upload a smaller image.";
// }
return "Error with image. Try again.";
}
catch (Exception ex)
{
return "Error with image. Try again.";
}
Подробнее здесь: [url]https://stackoverflow.com/questions/33551437/catch-timeout-with-httpexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия