SqlDataSource 超时

Timeout for SqlDataSource

我在 VS 2010 中保留了一个我继承的 C# 应用程序,但我遇到了超时问题。

正在调用的存储过程现在执行时间更长,因此生成以下错误:

Could not retrieve record data: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

使用的SqlDataSource直接在代码中实例化了,CommandTimeout属性好像没有,不知道怎么设置。这是真的?如果不是,我该如何访问 属性?

我见过的解决方案在 .aspx 文件中有 SqlDataSource,通常 CommandTimeout 是在控件(例如:gridview)事件中设置的。这里不是这种情况。

编辑:

一些代码

Results = new SqlDataSource();

Results.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["EM"].ConnectionString;

Results.SelectCommandType = SqlDataSourceCommandType.Text;

Results.SelectCommand = "exec sproc";

DataView ReturnedDataSet = (DataView)Results.Select(new 
System.Web.UI.DataSourceSelectArguments());

谢谢。

尽管我强烈建议您 (运行!) 远离 SqlDataSource,但您可以从 C# 设置命令超时。您可以将事件处理程序连接到一个事件,这会公开 DbCommand where you can set the timeout.

var ds = new SqlDataSource("connectionString", "select * from dbo.Project_Master");
ds.Selecting += (object s, SqlDataSourceSelectingEventArgs e) => e.Command.CommandTimeout = 1000;
var dataView = (DataView)ds.Select(new DataSourceSelectArguments());