我在伙伴关系中有一些奇怪的行为。 我正在尝试确定的网络应用。
我正在从法典中找到以下错误:
停机。 运行完成之前或服务器尚未答复的截止日期。
我熟悉这一错误及其许多原因。 我所有典型的射击渠道都失败了。
以下是一些动态:
服务器最近重建。 因此,这可以成为服务器配置问题。
这一错误只出现在特定的网络服务器上。 当我在当地管理该应用程序时,从其他服务器开始,该应用程序很快。 我无法从我的机器中再次向MS中的赞成者提出问题。
- This tells me that it is specific to this server.
一. 导言 采用SOSql指挥线的同一建议 它行之有效。 快速。
- This indicates that it is likely something .NET related, NOT db related
在实施该守则之前,我已在该服务器和同一行实施了其他储存程序。
- This suggests the proc may be related , but is not a "server X cannot talk to server Y"
我从非行所有者那里得到确认,即非行已收到指挥、执行(>1second )并退还数据。
- By tracing the code, I see the results are returned and it is not until I try to close the data reader that the error occurs.
- In fact I see it takes 36 milliseconds to execute the stored procedure and iterate through the result.
它喜欢要求数据检索。 时间已经接近,最终时间已经结束。
我已将最高人才库从31个增加到100个。
Here is a sample of what my code looks like, how it is structured. I have been hacking at it for trouble shooting: I have added the explict close to ensure I know where the error occurs. There may be syntax issues: I have made it generic, and may have introduced bugs in doing so.
public double GetMyData()
{
double returnValue;
// Used in logging to see if code was reached & how long it took.
System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
using (SqlConnection cn = Connections.GetSqlConnection())
{
cn.Open();
using (SqlCommand cmd = getSQLCommmand("SomeProcName"))
{
Log.Log.WriteTrace(string.Format("Execute {0} ","SomeProcName"),0);
s.Start();
SqlDataReader dr= null;
try
{
dr = cmd.ExecuteReader();
s.Stop();
Log.Log.WriteTrace("Timer", "ExecuteReader done " + s.ElapsedMilliseconds + "ms ", 0);
s.Start();
if (dr != null)
{
if (dr.Read())
{
returnValue =
Conversion.DBNullToDouble(
dr[0]);
}
s.Stop();
Log.Log.WriteTrace("Timer", "dr.read done (result:" + returnValue + ")" + s.ElapsedMilliseconds + "ms ", 0); // I get Here
}
}catch(Exception ex)
{
Log.Log.PersistException(ex);
}
//}
if(dr!=null && !dr.IsClosed)
dr.Close();// This times out
if (cn != null && cn.State !=ConnectionState.Closed)
cn.Close();
Log.Log.WriteTrace("DONE "),
;
}
}
return (returnValue);
}
<>>>>>
<代码>dr.Close(>); 限时2分钟。 就在这个服务器上。 从当地来看,这只字不提。
<>>>>>
1. 接受的答复: 我有一份有多个记录的文件。 我正在 taking。 拨号为Cancel()并不固定,但大大缩短了关闭数据阅读器所需的时间。 探索这一点应当有助于我解决问题。 我不知道为什么这只是在这个服务机上发生的,因为服务机是一家发展中国家服务机。