繁体   English   中英

SQLTransaction Multiadd响应重定向不起作用

[英]SQLTransaction Multiadd response redirect not working

我正在使用事务添加不同的数据库表。 当ı添加Response.redirect(""); 我收到错误消息: SQLTransaction complete; is no longer available. 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(); 
            }



        }

Response.Redirect调用Response.End,这将引发ThreadAbortException,该异常被您的catch块捕获,然后由于事务已被提交而无法进行回滚。 您可以改用Server.Transfer或使用Response.Redirect的重载,该重载允许您指定是否调用Response.End。

有关更多信息,请参见此链接http://support.microsoft.com/kb/312629

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM