2012-04-23 3 views
6

Я пытаюсь увеличить тайм-аут SqlDataSource за 30 секунд (кажется, по умолчанию). Я пытаюсь запустить хранимую процедуру, которая должна работать через 100 000 записей. Во время периодов занятости это время. Я использую ASP.NET 4.0 и IIS 6.0 на сервере 2003.asp.net C# SqlDataSource проблемы с таймаутом

Сообщение об ошибке: Истекло время ожидания. Период ожидания истекает до завершения операции или сервер не отвечает.

Я пытался без толку, чтобы продлить время ожидания:

< asp:SqlDataSource ID="dsTest" EnableCaching="true" CacheDuration="604800" runat="server" ConnectionString="<%$ ConnectionStrings:SuperNARIC %>" SelectCommand="selectStatus" SelectCommandType="StoredProcedure" onselecting="dsTest_Selecting" > 
    <SelectParameters> 
     < asp:ControlParameter ControlID="ddlCar" Name="CountryID" PropertyName="SelectedValue" Type="Int32" /> 
    < /SelectParameters> 
< /asp:SqlDataSource> 



protected void dsTest_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     e.Command.CommandTimeout = 300; 
    } 

Любая помощь будет принята с благодарностью.

Thanks

ответ

3

Время ожидания обычно устанавливается в строке подключения. Для получения полного примера см. http://www.connectionstrings.com/.

+0

+1 - Я просто в основном пишу это. – Tejs

+0

Привет, У меня есть следующее в моем web.config: Время ожидания подключения = 180 – user1024416

0

Время ожидания/таймаут соединения Значение по умолчанию - 15 секунд Продолжительность времени (в секундах), чтобы дождаться соединения с сервером до прекращения попытки и возникновения ошибки. Допустимые значения больше или равно 0 и меньше или равно 2147483647.

string myconstr = "Data Source=(local);Initial Catalog=AdventureWorks;" 
    + "Integrated Security=SSPI;Connection Timeout=30" 

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.100).aspx

+0

Благодарим вас за быстрые ответы. В моем web.config есть следующее: Время ожидания подключения = 180 – user1024416

1

Вы должны убедиться, как ваш CommandTimeout и ваши ConnectionString «ы Connect Timeout устанавливаются для предотвращения времени на долгое время - прекратить хранимые процедуры. Если вы не установите тайм-аут соединения, вы закроете время до завершения хранимой процедуры, даже если сама команда хранимой процедуры не была отключена.

+0

Благодарим вас за быстрые ответы. У меня есть следующее в моем web.config: Время ожидания подключения = 180 – user1024416

9

Есть два типа тайм-аут: ConnectionTimeout и CommandTimeout:

ConnectionTimeout Определяет максимальное время ваше приложение будет ждать, чтобы установить соединение с сервером.

CommandTimeout: Максимальное время для выполнения команды.

Убедитесь, что вы установили оба варианта. В Comand:

command.CommandTimeout = 300; 

Примечание: Это может быть реализовано в Selecting случае если ваша команда будет частью DataSource. e.command.CommandTimeout = 0; Значение 0 означает, что нужно ждать неограниченное время.

И Строка соединения:

SqlConnectionStringBuilder cs = new SqlConnectionStringBuilder(connectionString); 
cs.ConnectTimeout = 300; 

Или:

<add name="MyConnectionString" connectionString="Data Source=.\SQLEXPRESS; Database=MyDB; Integrated Security=True;Pooling=True;connection timeout=30" providerName="System.Data.SqlClient" /> 

Примечание: Попробуйте установить строку подключения тайм-аут во всем мире, возможно, в файле конфигурации.

+0

Привет, У меня есть следующее в моем web.config: Время ожидания подключения = 180 – user1024416

+0

Прохладный, закачивайте его до 500 только для целей тестирования и смотрите. – Ulises

0

Максимальное время соединения Out Значение может быть 2147483647. Попробуйте установить Connection Timeout значение в строке подключения в вашем Web Config, как показано ниже

<connectionStrings> <add name="ConnectionString" connectionString="Data Source=144681;Initial Catalog=Customer;Persist Security Info=True;User ID=xxxxx;Password=yyyyy" providerName="System.Data.SqlClient" /> </connectionStrings>

+1

И добавить ' 'в' ' –

-1

Там есть тайм-аут для обоих SQL и ответ страницы время.

Server.ScriptTimeout = 120; 
e.Command.CommandTimeout = 120; 
5

Как упомянуто here, это сработало для меня.

Вы можете увеличить свойство Timeout как этот

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
     { 
      e.Command.CommandTimeout = 0; 
     } 

Установка таймаута в 0 означает отсутствие таймаута

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