Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть ХП, которая выполняется примерно 30 минут. Из кода .NET надо к ней обратиться. Раньше для общения с БД использовал Microsoft`овский провайдер доступа. Эта процедура обрывала свое выполнение. Вроде объяснимо, Microsoft Provider не поддерживает TimeOut и т.д... Но сейчас для этой ХП решил использовать ODP.NET, т.к. в нем можно указать TimeOut выполнения комманды. Более того, по умолчанию он там бесконечен. Но ситуация повторяется. Процедура втихомолку прекращает свое выпонение "на полуслове", никаких exception... Сессия тупо вырубается без ошибок. Естественно, ошибок в ХП нет. Запускаю из навигатора, все отрабатывает на ура. Как обойти данную проблему? База — Oracle 10.2 ODP.NET — тоже ХП вызывается из веб-сервиса. Собственно, на него я и грешу, т.к. та же процедура нормально отрабатывает из консольного приложения. Буду благодарен на любые ссылки по данной тематике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 15:11 |
|
||
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
У веб-сервиса, вроде бы, тоже TimeOut есть. Минут 5 по умолчанию.-- Абыpвалг! - сказал Linux после pyсификации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 15:30 |
|
||
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть ХП, которая выполняется примерно 30 минут. Из кода .NET надо к ней обратиться. Раньше для общения с БД использовал Microsoft`овский провайдер доступа. Эта процедура обрывала свое выполнение. Вроде объяснимо, Microsoft Provider не поддерживает TimeOut и т.д... Но сейчас для этой ХП решил использовать ODP.NET, т.к. в нем можно указать TimeOut выполнения комманды. Более того, по умолчанию он там бесконечен. Но ситуация повторяется. Процедура втихомолку прекращает свое выпонение "на полуслове", никаких exception... Сессия тупо вырубается без ошибок. Естественно, ошибок в ХП нет. Запускаю из навигатора, все отрабатывает на ура. Как обойти данную проблему? База — Oracle 10.2 ODP.NET — тоже ХП вызывается из веб-сервиса. Собственно, на него я и грешу, т.к. та же процедура нормально отрабатывает из консольного приложения. Буду благодарен на любые ссылки по данной тематике. Таймаут бывает не только у команды, но и у соединения. Установи и то и другое в 45 минут. oConnection.ConnectionTimeOut=45*60 oCommand.CommandTimeOut=45*60 Ну и время сессии установи 60 минут timeout="60" - это в вэбконфиге. Есть многое на свете, друг Гораций, что непонятно нашим мудрецам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 15:40 |
|
||
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Dkm_S, Вы писали: D_S>У веб-сервиса, вроде бы, тоже TimeOut есть. Минут 5 по умолчанию. D_S> данное сообщение получено с www.gotdotnet.ru D_S>ссылка на оригинальное сообщение Я делаю: myService.Timeout = System.Threading.Timeout.Infinite; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 15:42 |
|
||
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Max Pro, Вы писали: MP>Всем привет. MP>Есть ХП, которая выполняется примерно 30 минут. Из кода .NET надо к ней обратиться. Раньше для общения с БД использовал Microsoft`овский провайдер доступа. Эта процедура обрывала свое выполнение. Вроде объяснимо, Microsoft Provider не поддерживает TimeOut и т.д... Но сейчас для этой ХП решил использовать ODP.NET, т.к. в нем можно указать TimeOut выполнения комманды. Более того, по умолчанию он там бесконечен. Но ситуация повторяется. Процедура втихомолку прекращает свое выпонение "на полуслове", никаких exception... Сессия тупо вырубается без ошибок. Естественно, ошибок в ХП нет. Запускаю из навигатора, все отрабатывает на ура. Как обойти данную проблему? MP>База — Oracle 10.2 MP>ODP.NET — тоже MP>ХП вызывается из веб-сервиса. Собственно, на него я и грешу, т.к. та же процедура нормально отрабатывает из консольного приложения. MP>Буду благодарен на любые ссылки по данной тематике. MP>Таймаут бывает не только у команды, но и у соединения. Установи и то и другое в 45 минут. MP>oConnection.ConnectionTimeOut=45*60 MP>oCommand.CommandTimeOut=45*60 MP>Ну и время сессии установи 60 минут MP>timeout="60" — это в вэбконфиге. Спасибо за совет. К сожалению на данный момент не имею возможности проверить. Меня смущает таймаут соединения. Вот что пишет Oracle в документации по ODP.NET: Maximum time (in seconds) to wait for a free connection from the pool. This attribute specifies the maximum amount of time (in seconds) that the Open() method can take to obtain a pooled connection before it terminates the request. This value comes into effect only if no free connection is available from the connection pool and the Max Pool Size is reached. If a free connection is not available within the specified time, an exception is thrown. Connection Timeout does not limit the time required to open new connections. This attribute value takes effect for pooled connection requests and not for new connection requests. Т.е., как я понимаю, в этой переменной указывается время, которое код .NET будет терпеливо ждать, пока пул не выдаст ему свободное соединение, но не время, на которое это самое соединение можно занять. Таким образом, если я уж получил соединение и начал выполнять ХП, то прервать меня не имеют права. К тому же значение по умолчания для этой переменной — 15 секунд. А у меня ХП успевает проработать примерно 20 минут. Нестыковка. А вот это: MP>Ну и время сессии установи 60 минут MP>timeout="60" — это в вэбконфиге. очень интересно. Разве это должно повлиять? Мы ведь все время (не бейте за грубое сравнение) "сидим в коде сессии". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 16:11 |
|
||
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
Ничего не понимаю... :crash: Спасибо товарищу за совет: MP>Ну и время сессии установи 60 минут MP>timeout="60" — это в вэбконфиге. Действительно, вроде это правильное направление. После длительных оптимизаций процедура теперь успевает выполниться за срок меньший 20 минут. Т.е., я не смог наблюдать описываемое мною поведение. Для проверки сделал длительность сессии 3 минуты. Тогда процедура как и раньше не успела выпониться. Только, "старалась выполниться" примерно минут 15, а не 3, к сожалению... Теперь делаю так. Вызываю эту длительную процедуру в отдельном потоке. Т.е. запустился WebMethod сервиса, затем он тупо создает новый поток, в котором уже происходят длительные действия. И все равно не выходит!!! Кто-нибудь что-то объяснить может в данной ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 18:21 |
|
||
|
TimeOut выполнения ХП из WebService
|
|||
|---|---|---|---|
|
#18+
Ну, Аноним, ты даёшь! Всё тебе на блюдечке выдал, а ты теперь потоки какие-то там придумал. Потоки в основном важны под вин, а не под вэб. В данном случае, на сколько я могу удалённо тебя понять, они (потоки) вообще тебе не нужны. Есть многое на свете, друг Гораций, что непонятно нашим мудрецам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 19:34 |
|
||
|
|

start [/forum/topic.php?fid=18&gotonew=1&tid=1391144]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
7ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 430ms |

| 0 / 0 |
