C# 尝试将Transaction.Commit()提交到数据库时超时;潜在的僵局?

C# 尝试将Transaction.Commit()提交到数据库时超时;潜在的僵局?,c#,transactions,timeout,commit,deadlock,C#,Transactions,Timeout,Commit,Deadlock,我有一个网页,其编码结构如下: SqlConnection conX =new SqlConnection(blablabla); conX.Open(); SqlTransaction tran=conX.BeginTransaction(); try{ SqlCommand cmdInsert =new SqlCommand("INSERT INTO Table1(ColX,ColY) VALUES @x,@y",conX); cmdInsert.Transaction=tr

我有一个网页,其编码结构如下:

SqlConnection conX =new SqlConnection(blablabla);
conX.Open();
SqlTransaction tran=conX.BeginTransaction();


try{
   SqlCommand cmdInsert =new SqlCommand("INSERT INTO Table1(ColX,ColY) VALUES @x,@y",conX);
   cmdInsert.Transaction=tran;
   cmdInsert.ExecuteNonQuery();

   SqlCommand cmdSelect=new SqlCOmmand("SELECT * FROM Table1",conX);
   cmdSelect.Transaction=tran;
   SqlDataReader dtr=cmdSelect.ExecuteReader();

   //read stuff from dtr
   dtr.Close();

   cmdInsert=new SqlCommand("UPDATE Table2 set ColA=@a",conX);
   cmdInsert.Transaction=tran;
   cmdInsert.ExecuteNonQuery();

   //display MiscMessage
   tran.Commit();
   //display SuccessMessage
}
catch(Exception x)
{
   tran.Rollback();
   //display x.Message
}
finally
{
   conX.Close();
}
所以,在收到消息之前,一切似乎都正常。然后,过了一会儿(也许15秒?)x.信息弹出,说:

“超时已过期。操作完成前超时时间已过,或者服务器没有响应。”

那么我的trans.Commit()有什么问题吗?数据库没有更新,所以我假设trans.Rollback可以工作

我已经读到死锁会导致超时…这个问题是由我的SELECT语句从表1中选择引起的,它正被第一个INSERT语句使用?
如果是,我该怎么办?如果这不是问题,那是什么?

因为您显示了错误消息,您的事务仍然打开,然后超时过期。提交事务,然后显示消息。

哇,谢谢!这就是问题所在!还有一些在.Commit()之前完成的.DataBind()!除息的