![]() |
#1 |
Участник
|
HttpRequestTimedOutWithoutDetail
Добрый день.
Возникла проблема с веб-сервисом, который имеет application часть. При продолжительной работе (длительности более 5 минут) приложение выдает сообщение с ошибкой HttpRequestTimedOutWithoutDetail (см. скриншот). При этом сам сервис не "вылетает", его запрос обрабатывается дальше и через несколько минут возвращает ответ OK, то есть по сути сама по себе процедура завершается корректно. Но что делать с ошибкой time out? |
|
![]() |
#2 |
Чайный пьяница
|
Цитата:
Сообщение от Camena
![]() Добрый день.
Возникла проблема с веб-сервисом, который имеет application часть. При продолжительной работе (длительности более 5 минут) приложение выдает сообщение с ошибкой HttpRequestTimedOutWithoutDetail (см. скриншот). При этом сам сервис не "вылетает", его запрос обрабатывается дальше и через несколько минут возвращает ответ OK, то есть по сути сама по себе процедура завершается корректно. Но что делать с ошибкой time out?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#3 |
Консультант-джедай
|
А в web,config'e разве таймаут не прописывается?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! ![]() |
|
![]() |
#4 |
Участник
|
Возможно и прописывается, но просморт конфига ничего не дал. Подскажите, какие параметры надо искать, либо наоборот прописать для увеличения значения time out?
Кстати обнаружилось, что существует какой-то ServiceReference.ClientConfig файл, в котором можно задать BasicHttpBinding.OpenTimeout и BasicHttpBinding.ReceiveTimout параметры, но только где этот файл искать и при каких обстоятельствах он генерится... Последний раз редактировалось Camena; 23.09.2009 в 17:17. |
|
![]() |
#5 |
Чайный пьяница
|
Цитата:
Сообщение от Camena
![]() Возможно и прописывается, но просморт конфига ничего не дал. Подскажите, какие параметры надо искать, либо наоборот прописать для увеличения значения time out?
Кстати обнаружилось, что существует какой-то ServiceReference.ClientConfig файл, в котором можно задать BasicHttpBinding.OpenTimeout и BasicHttpBinding.ReceiveTimout параметры, но только где этот файл искать и при каких обстоятельствах он генерится... Код: <system.web> <httpRuntime executionTimeout="18000" maxRequestLength="8192" /> А вообще почему Вам не подходит асинхронный вызов?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 23.09.2009 в 17:30. |
|
|
За это сообщение автора поблагодарили: Camena (1). |
![]() |
#6 |
Участник
|
Цитата:
Сообщение от a33ik
![]() Откройте веб конфиг CRM. Найдите в нём примерно такой кусок xml:
Код: <system.web> <httpRuntime executionTimeout="18000" maxRequestLength="8192" /> А вообще почему Вам не подходит асинхронный вызов? ![]() На самом деле там все не так просто: сам сервис вызывается асинхронно, но в рамках его происходят многочисленные обработки данных и отправки запросов к платформе, которые уже организовать асинхронно не получится. |
|
![]() |
#7 |
Чайный пьяница
|
Цитата:
Сообщение от Camena
![]() Спасибо за помощь! Строки у меня в конфиге такой нет - думаю, ничего страшного, если добавлю
![]() На самом деле там все не так просто: сам сервис вызывается асинхронно, но в рамках его происходят многочисленные обработки данных и отправки запросов к платформе, которые уже организовать асинхронно не получится.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#8 |
Консультант-джедай
|
Вообщето там два таймаута
В начале в секции <system.web> атрибут <httpRuntime executionTimeout="300" maxRequestLength="8192"/> В секции <location path="MSCRMServices"> <system.web> атрибут <httpRuntime maxRequestLength="8192"/> Может и второй поможет ![]() П.С. для дефолтного сайта конфиг расположен C:\inetpub\wwwroot\web.config (а для не дефолтного где-то в недрах папки инсталяции crm-сервера ![]()
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! ![]() |
|
![]() |
#9 |
Чайный пьяница
|
Цитата:
FYI Вот что об этом пишется в MSDN.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 23.09.2009 в 19:11. |
|
![]() |
#10 |
Участник
|
В общем, эксперименты с увеличением значения атрибута executionTimeout к решению проблемы не привели - появление мессаджа осталось. При каком-то значении сервис даже вообще перестал запускаться.
Последний раз редактировалось Camena; 24.09.2009 в 10:07. |
|
![]() |
#11 |
Чайный пьяница
|
Можете показать код вызова сервиса, если не секрет, конечно?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#12 |
Участник
|
Не секрет:
isvService.VerifyHCompleted += new EventHandler<VerifyHCompletedEventArgs>(isvService_VerifyHCompleted); isvService.VerifyHAsync(HtmlPage.Document.QueryString["orgname"], HtmlPage.Document.QueryString["newuserid"], newdate.SelectedDate.Value, 0, 1, newdate.SelectedDate.Value, newdate.SelectedDate.Value); |
|
![]() |
#13 |
Участник
|
Все-таки очень интересует вопрос, почему даже при наличии ошибки о тай-ауте сервис продолжает работу и завершает ее с ответом OK (только пользователь, к сожалению, об этом не узнает)? Ошибка появляется ровно через 10 минут после запуска работы сервиса.
|
|
![]() |
#14 |
Чайный пьяница
|
Цитата:
Сообщение от Camena
![]() Не секрет:
isvService.VerifyHCompleted += new EventHandler<VerifyHCompletedEventArgs>(isvService_VerifyHCompleted); isvService.VerifyHAsync(HtmlPage.Document.QueryString["orgname"], HtmlPage.Document.QueryString["newuserid"], newdate.SelectedDate.Value, 0, 1, newdate.SelectedDate.Value, newdate.SelectedDate.Value); Цитата:
1. Есть кастомный вебсервис, который выполняетяет некие тяжёловесные операции (можно смоделировать простым ожиданием времени). 2. Есть кастомная веб страница с которой и выполняется вызов данного сервиса. Вопрос, если всё так - каким образом выполняется вызов данной страницы? Она помещена в GUI CRM или вызывается при помощи AJAX?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#15 |
Участник
|
Цитата:
Сообщение от a33ik
![]() Давайте проясним архитектуру Вашего решения - постараюсь смоделировать Вашу ситуацию. Как я вижу по написанному:
1. Есть кастомный вебсервис, который выполняетяет некие тяжёловесные операции (можно смоделировать простым ожиданием времени). 2. Есть кастомная веб страница с которой и выполняется вызов данного сервиса. Вопрос, если всё так - каким образом выполняется вызов данной страницы? Она помещена в GUI CRM или вызывается при помощи AJAX? |
|
![]() |
#16 |
Чайный пьяница
|
Цитата:
Вопрос несколько другого рода - почему не используете у себя обращение к сервису используя SOAP и AJAX, а обращаетесь к дополнительной странице? В кодебихайнде страницы присутствует какая то дополнительная логика?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|