asp.net c#SqlDataSource timout问题

use*_*416 9 c# asp.net

我正在尝试将SqlDataSource的超时延长超过30秒(似乎是默认值).我正在尝试运行一个必须运行100,000个记录的存储过程.在繁忙时段,它会超时.我在2003服务器上使用ASP.NET 4.0和IIS 6.0.

错误消息: 超时已过期.操作完成之前经过的超时时间或服务器没有响应.

我试图无法延长超时:

< 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;
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

谢谢

Har*_*rry 12

就像这里提到的,这对我有用.

您可以像这样增加Timeout属性

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {
            e.Command.CommandTimeout = 0;
        }
Run Code Online (Sandbox Code Playgroud)

将timeout设置为0表示没有超时


Uli*_*ses 9

有两种类型的超时:ConnectionTimeoutCommandTimeout:

ConnectionTimeout 确定应用程序等待与服务器建立连接的最长时间.

CommandTimeout:命令执行所允许的最长时间.

确保你设置两者.在Comand中:

 command.CommandTimeout = 300;
Run Code Online (Sandbox Code Playgroud)

注意:Selecting如果您的命令是DataSource的一部分,则可以在事件中实现.无限期等待e.Command.CommandTimeout = 0;0手段价值.

连接字符串:

SqlConnectionStringBuilder cs = new SqlConnectionStringBuilder(connectionString);
cs.ConnectTimeout = 300;
Run Code Online (Sandbox Code Playgroud)

要么:

<add name="MyConnectionString" connectionString="Data Source=.\SQLEXPRESS; Database=MyDB; Integrated Security=True;Pooling=True;connection timeout=30" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

注意:尝试全局设置连接字符串超时,可能在配置文件中.


Sch*_*enz 3

超时通常在连接字符串中设置。有关完整示例,请参阅http://www.connectionstrings.com/ 。