23.09.2009, 14:31 | #1 |
Участник
|
HttpRequestTimedOutWithoutDetail
Добрый день.
Возникла проблема с веб-сервисом, который имеет application часть. При продолжительной работе (длительности более 5 минут) приложение выдает сообщение с ошибкой HttpRequestTimedOutWithoutDetail (см. скриншот). При этом сам сервис не "вылетает", его запрос обрабатывается дальше и через несколько минут возвращает ответ OK, то есть по сути сама по себе процедура завершается корректно. Но что делать с ошибкой time out? |
|
23.09.2009, 14:37 | #2 |
Чайный пьяница
|
Цитата:
Сообщение от Camena
Добрый день.
Возникла проблема с веб-сервисом, который имеет application часть. При продолжительной работе (длительности более 5 минут) приложение выдает сообщение с ошибкой HttpRequestTimedOutWithoutDetail (см. скриншот). При этом сам сервис не "вылетает", его запрос обрабатывается дальше и через несколько минут возвращает ответ OK, то есть по сути сама по себе процедура завершается корректно. Но что делать с ошибкой time out?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
23.09.2009, 15:58 | #3 |
Консультант-джедай
|
А в web,config'e разве таймаут не прописывается?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
23.09.2009, 17:13 | #4 |
Участник
|
Возможно и прописывается, но просморт конфига ничего не дал. Подскажите, какие параметры надо искать, либо наоборот прописать для увеличения значения time out?
Кстати обнаружилось, что существует какой-то ServiceReference.ClientConfig файл, в котором можно задать BasicHttpBinding.OpenTimeout и BasicHttpBinding.ReceiveTimout параметры, но только где этот файл искать и при каких обстоятельствах он генерится... Последний раз редактировалось Camena; 23.09.2009 в 17:17. |
|
23.09.2009, 17:28 | #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). |
23.09.2009, 18:19 | #6 |
Участник
|
Цитата:
Сообщение от a33ik
Откройте веб конфиг CRM. Найдите в нём примерно такой кусок xml:
Код: <system.web> <httpRuntime executionTimeout="18000" maxRequestLength="8192" /> А вообще почему Вам не подходит асинхронный вызов? На самом деле там все не так просто: сам сервис вызывается асинхронно, но в рамках его происходят многочисленные обработки данных и отправки запросов к платформе, которые уже организовать асинхронно не получится. |
|
23.09.2009, 18:22 | #7 |
Чайный пьяница
|
Цитата:
Сообщение от Camena
Спасибо за помощь! Строки у меня в конфиге такой нет - думаю, ничего страшного, если добавлю
На самом деле там все не так просто: сам сервис вызывается асинхронно, но в рамках его происходят многочисленные обработки данных и отправки запросов к платформе, которые уже организовать асинхронно не получится.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
23.09.2009, 19:04 | #8 |
Консультант-джедай
|
Вообщето там два таймаута
В начале в секции <system.web> атрибут <httpRuntime executionTimeout="300" maxRequestLength="8192"/> В секции <location path="MSCRMServices"> <system.web> атрибут <httpRuntime maxRequestLength="8192"/> Может и второй поможет П.С. для дефолтного сайта конфиг расположен C:\inetpub\wwwroot\web.config (а для не дефолтного где-то в недрах папки инсталяции crm-сервера )
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
23.09.2009, 19:07 | #9 |
Чайный пьяница
|
Цитата:
FYI Вот что об этом пишется в MSDN.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 23.09.2009 в 19:11. |
|
24.09.2009, 10:04 | #10 |
Участник
|
В общем, эксперименты с увеличением значения атрибута executionTimeout к решению проблемы не привели - появление мессаджа осталось. При каком-то значении сервис даже вообще перестал запускаться.
Последний раз редактировалось Camena; 24.09.2009 в 10:07. |
|
24.09.2009, 11:26 | #11 |
Чайный пьяница
|
Можете показать код вызова сервиса, если не секрет, конечно?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
24.09.2009, 11:32 | #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); |
|
24.09.2009, 11:49 | #13 |
Участник
|
Все-таки очень интересует вопрос, почему даже при наличии ошибки о тай-ауте сервис продолжает работу и завершает ее с ответом OK (только пользователь, к сожалению, об этом не узнает)? Ошибка появляется ровно через 10 минут после запуска работы сервиса.
|
|
24.09.2009, 11:58 | #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 |
|
24.09.2009, 12:15 | #15 |
Участник
|
Цитата:
Сообщение от a33ik
Давайте проясним архитектуру Вашего решения - постараюсь смоделировать Вашу ситуацию. Как я вижу по написанному:
1. Есть кастомный вебсервис, который выполняетяет некие тяжёловесные операции (можно смоделировать простым ожиданием времени). 2. Есть кастомная веб страница с которой и выполняется вызов данного сервиса. Вопрос, если всё так - каким образом выполняется вызов данной страницы? Она помещена в GUI CRM или вызывается при помощи AJAX? |
|
24.09.2009, 12:25 | #16 |
Чайный пьяница
|
Цитата:
Вопрос несколько другого рода - почему не используете у себя обращение к сервису используя SOAP и AJAX, а обращаетесь к дополнительной странице? В кодебихайнде страницы присутствует какая то дополнительная логика?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|