C#语言中TransactionScope类的使用

如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项:
1、在项目中引用using System.Transactions命名空间(先要在添加net组件的引用);

2、具体示例如下:
  

 

        /// <summary>
        
/// 发送消息
         
/// </summary>
        
/// <param name="sendUserId"></param>
        
/// <param name="toUser">格式7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName,7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName</param>
        
/// <param name="content"></param>
        
/// <param name="sendedStatus">表示已送</param>
        
/// <returns></returns>

        public static int sendMessage(string sendUserId, string toUser, string content, string sendedStatus)
        
{           
            
int receiveCount = 0;
            TransactionOptions transactionOption 
= new TransactionOptions();

            
//设置事务隔离级别
            transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;

            
// 设置事务超时时间为60秒
            transactionOption.Timeout = new TimeSpan(0060);

            
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
            
{
                
try
                
{
                    
//在这里实现事务性工作
     
//发送消息
                    insertMessage(sendUserId, toUser, content, sendedStatus);

     
//在接收信息表中插入记录
                    receiveCount += insertReceiveMessage(userids[0], sendUserId, content, "0");
                   
                    
// 没有错误,提交事务
                    scope.Complete();
                }

                
catch (Exception ex) {
                    
throw new Exception("发送信息异常,原因:"+ex.Message);
                }finally{
                    //释放资源
                    scope.Dispose();
                  }
                               
            }

            
return receiveCount;
        }



 3、对MSDTC组件设置:
 步骤:
  在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务。
 a.控制面板->管理工具->组件服务->计算机->我的电脑->右键->属性
 b.选择MSDTC页, 确认"使用本地协调器"
 c.点击下方"安全配置"按钮
 d.勾选: "允许网络DTC访问","允许远程客户端","允许入站","允许出站","不要求进行身份验证".
 e.对于数据库服务器端, 可选择"要求对呼叫方验证"
 f.勾选:"启用事务Internet协议(TIP)事务"。
 g.在双方防火墙中增加MSDTC.exe例外
   可用命令行: netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable

4、重启IIS服务器。

Win7/win2008中对MSDTC组件设置

Vista, Windows 7,Windows Server 2008 MSDTC配置

 http://hi.baidu.com/wuwenjie/blog/item/738b0638a2514bfbb211c790.html

 

 

 

 

 

posted @   清风333  阅读(203)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示