我正在尝试将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表示没有超时
有两种类型的超时:ConnectionTimeout和CommandTimeout:
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)
注意:尝试全局设置连接字符串超时,可能在配置文件中.
归档时间: |
|
查看次数: |
20446 次 |
最近记录: |