C# SQLTransaction多添加响应重定向不工作
我使用事务添加不同的数据库表。当ıadd Response.redirect时;我得到的错误是:SQLTransaction已完成;不再提供。如果ı删除response.redirect,则它工作正常,没有错误C# SQLTransaction多添加响应重定向不工作,c#,asp.net,sql,sql-server,sqltransaction,C#,Asp.net,Sql,Sql Server,Sqltransaction,我使用事务添加不同的数据库表。当ıadd Response.redirect时;我得到的错误是:SQLTransaction已完成;不再提供。如果ı删除response.redirect,则它工作正常,没有错误 protected void btnEkle_Click(object sender, EventArgs e) { SqlConnection baglanti = system.baglan(); SqlCommand
protected void btnEkle_Click(object sender, EventArgs e)
{
SqlConnection baglanti = system.baglan();
SqlCommand Trans_isl1 = new SqlCommand("Insert TblDetay (Ad,Yerler,Ulasim,Resim,Durum) values(@Ad,@Yerler,@Ulasim,@Resim,@Durum)", baglanti);
Trans_isl1.Parameters.Add("@Ad", "deneme");
Trans_isl1.Parameters.Add("@Yerler", "sdfgjkj");
Trans_isl1.Parameters.Add("@Ulasim", "ads1");
Trans_isl1.Parameters.Add("@Resim", "1.jpg");
Trans_isl1.Parameters.Add("@Durum", true);
SqlTransaction sqlTrans = baglanti.BeginTransaction(); // Transaction nesnesine işlemleri eşitliyoruz.
Trans_isl1.Transaction = sqlTrans;
try
{
Trans_isl1.ExecuteNonQuery();
sqlTrans.Commit();
Response.Redirect("second.aspx?id="+ Session["id"]);
}
catch (Exception hata)
{
Response.Write("İşleminiz yapılamadı, Oluşan Hatanın Detayı<br />" + hata);
sqlTrans.Rollback();
}
finally
{
baglanti.Close();
baglanti.Dispose();
Trans_isl1.Dispose();
}
}
Response.Redirect调用Response.End,它将抛出ThreadAbortException,该异常被catch块捕获,然后回滚无法发生,因为事务已提交。您可以使用Server.Transfer,也可以使用Response.Redirect的重载来指定是否调用Response.End 有关更多信息,请参阅此链接
执行第一个命令后,您正在调用BeginTransaction。在执行第一个命令之前,尝试调用BeginTransaction。此外,您的SqlTransaction需要使用块来确保它被清理。可能是响应。写调用响应。以某种方式结束。感谢您在我的代码响应中使用了它。重定向nextpage.aspx,false;