1

У меня есть консольное приложение, написанное на C# 4.0. Я запускаю хранимую процедуру SQL, которая иногда занимает слишком много времени и генерируется исключение таймаута соединения.C# .net Консольное приложение Свойство SQLCommand.CommandTimeOut не работает

Чтобы обработать его, я сначала установил Timeout на 360 в строке подключения в файле web.config, но не повезло.

Тогда я попробовал:

SQLCommand cmd = new SQLCommand(); 
cmd.CommandTimeout = 360; 

, но это тоже не работает.

Любая помощь была бы принята с благодарностью. Я попытался сделать то же самое с Entity Framework 4.0, но имел ту же проблему. Значение тайм-аута, которое я предоставляю, не применяется!

<add name="ConnectionString" connectionString="SERVER=db.mydomain.com;DATABASE=DatabaseName;UID=userID;PWD=Password;Connect Timeout=360;Packet Size=8192;Pooling=True;Min Pool Size=1;Max Pool Size=1000;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 

Исключение:

Timeout expired: The timeout period elapsed prior to completion of the operation or the server is not responding. 
+0

Итак, вы хотите 6-минутный тайм-аут, и он по-прежнему синхронизируется по умолчанию 30 секунд? – McGarnagle

+0

@ dbaseman да, вы правы. – HaBo

+0

Я думаю, что вы путаетесь с command.CommandTimeout и таймаутом соединения. В вашей веб-конфигурации вы указали время ожидания подключения до 360 – praveen

ответ

2

Установите CommandTimeout = 0 в коде и удалить его из файла конфигурации.

Установка Timeout = 0 означает, что он завершит работу в случае продолжительной работы.

0

У вас есть context connection=true в строке подключения в файле Web.config? По MSDN:

CommandTimeout не имеет никакого эффекта, когда команда выполняется с помощью соединения контекста

+0

Я добавил свою coonectionstring, пожалуйста, посмотрите – HaBo

+0

Ваша строка подключения выглядит хорошо для меня, так что это не может быть проблемой. –

Смежные вопросы