首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDataSource超时

SqlDataSource超时
EN

Stack Overflow用户
提问于 2018-09-07 20:26:13
回答 1查看 1.3K关注 0票数 1

在2010年,我继承了一款C#应用程序,现在我还在继续使用它,而且我还面临着一个超时问题。

正在调用一个存储过程,现在执行所用的时间要长得多,这样会产生以下错误:

无法检索记录数据:超时过期。在操作完成或服务器没有响应之前经过的超时时间。

使用的SqlDataSource直接在代码中实例化,我不知道如何设置CommandTimeout属性,因为它似乎不可用。这是真的吗?如果不是,我如何访问该属性?

我看到的解决方案将SqlDataSource放在.aspx文件中,通常在控件(如:网格视图)事件中设置CommandTimeout。这里不是这样的。

编辑:

一些代码

代码语言:javascript
复制
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());

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-07 20:57:54

尽管我强烈建议你移动(跑!)在SqlDataSource之外,您可以从C#中设置命令超时。有一个事件,您可以连接一个事件处理程序,这暴露了DbCommand,您可以在其中设置超时

代码语言:javascript
复制
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());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52229237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档