在2010年,我继承了一款C#应用程序,现在我还在继续使用它,而且我还面临着一个超时问题。
正在调用一个存储过程,现在执行所用的时间要长得多,这样会产生以下错误:
无法检索记录数据:超时过期。在操作完成或服务器没有响应之前经过的超时时间。
使用的SqlDataSource直接在代码中实例化,我不知道如何设置CommandTimeout属性,因为它似乎不可用。这是真的吗?如果不是,我如何访问该属性?
我看到的解决方案将SqlDataSource放在.aspx文件中,通常在控件(如:网格视图)事件中设置CommandTimeout。这里不是这样的。
编辑:
一些代码
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());谢谢。
发布于 2018-09-07 20:57:54
尽管我强烈建议你移动(跑!)在SqlDataSource之外,您可以从C#中设置命令超时。有一个事件,您可以连接一个事件处理程序,这暴露了DbCommand,您可以在其中设置超时。
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());https://stackoverflow.com/questions/52229237
复制相似问题