Web Service事务处理

此处讲的主要是Com+事务,而不是Ado.net中的事务.由于Http的无状态性,用到事务时是有一些限制的,比如Web method必须是根对象,也就是说事务的代码必须在一个方法中,而不能2个方法参与在一个事务中..

启用事务的步骤:

  1. 添加System.EnterpriseServices程序集的引用.
  2. 给WebMethod特性添加TransactionOption=TransactionOption.RequiresNew

事务提交的时机:

在方法顺利执行完后事务自动提交,包括发生了异常但是已经catch了,仍然会提交事务.

事务回滚的时机:

  1. 有异常发生并且未处理
  2. 主动回滚,通过调用ContexttUtil.SetAbort()方法来达到.

代码片段为:

public void Update()

{

SqlConnection conn= new SqlConnection(connstr);

SqlCommand cmd = new SqlCommand("delete table",conn);

try{

conn.Open();

cmd.ExecuteNonQuery();

FileStream fs =new FileStream("does not exist file",FileMode,Open);

}

catch

{

}

这样虽然打开文件时,文件不存在会产生异常,但已经catch了,所以表中的数据仍然会删掉.如果去掉catch那么表中的数据就不会被删掉,或者在catch块中加上ContextUtil.SetAbort()也会回滚事务,表中的数据也不会被删除.

转载于:https://www.cnblogs.com/david-cj/archive/2010/01/13/1646498.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值