我使用事务来添加不同的数据库表。当我添加Response.redirect("");
我收到错误:SQLTransaction complete; is no longer available.
如果ı删除response.redirect,它没有错误正常工作。
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();
}
}
答案 0 :(得分:0)
Response.Redirect调用Response.End,它会抛出一个ThreadAbortException,它会被catch块捕获,然后由于事务已经提交而无法发生回滚。您可以使用Server.Transfer或使用Response.Redirect的重载,它允许您指定是否调用Response.End。
有关详细信息,请参阅此链接 http://support.microsoft.com/kb/312629