1

我有一个用 C# 4.0 编写的控制台应用程序。我正在运行一个有时需要很长时间的 SQL 存储过程,并且会引发连接超时异常。

为了处理它,我首先在 web.config 文件的连接字符串中将 Timeout 设置为 360,但没有运气。

然后我尝试了:

SQLCommand cmd = new SQLCommand();
 cmd.CommandTimeout = 360;

但这也行不通。

任何帮助将不胜感激。我尝试对 Entity Framework 4.0 做同样的事情,但遇到了同样的问题。我提供的超时值没有被应用!

<add name="ConnectionString" connectionString="SERVER=db.mydomain.com;DATABASE=DatabaseName;UID=userID;PWD=Password;Connect Timeout=360;Packet Size=8192;Pooling=True;Min Pool Size=1;Max Pool Size=1000;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

例外:

Timeout expired: The timeout period elapsed prior to completion of the operation or the server is not responding.
4

2 回答 2

4

在您的代码中设置CommandTimeout = 0并将其从配置文件中删除。

设置Timeout = 0方法,在长时间运行的情况下也能完成工作。

于 2012-06-24T11:35:43.470 回答
0

你的文件context connection=true中有连接字符串Web.config吗?根据MSDN

对上下文连接执行命令时,CommandTimeout 无效

于 2012-06-24T04:05:15.570 回答