C#语言中TransactionScope类的使用

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

2、具体示例如下:
  

 

(转)C#语言中TransactionScope类的使用(转)C#语言中TransactionScope类的使用        /// <summary>
(转)C#语言中TransactionScope类的使用        
/// 
发送消息
(转)C#语言中TransactionScope类的使用         
/// </summary>
(转)C#语言中TransactionScope类的使用        
/// <param name="sendUserId"></param>
(转)C#语言中TransactionScope类的使用        
/// <param name="toUser">格式7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName,7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName</param>
(转)C#语言中TransactionScope类的使用        
/// <param name="content"></param>
(转)C#语言中TransactionScope类的使用        
/// <param name="sendedStatus">表示已送</param>
(转)C#语言中TransactionScope类的使用        
/// <returns></returns>
(转)C#语言中TransactionScope类的使用        public static int sendMessage(string sendUserId, string toUser, string content, string sendedStatus)
(转)C#语言中TransactionScope类的使用(转)C#语言中TransactionScope类的使用        
{           
(转)C#语言中TransactionScope类的使用            
int receiveCount = 0;
(转)C#语言中TransactionScope类的使用            TransactionOptions transactionOption = 
new TransactionOptions();
(转)C#语言中TransactionScope类的使用
(转)C#语言中TransactionScope类的使用            
//
设置事务隔离级别
(转)C#语言中TransactionScope类的使用
            transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
(转)C#语言中TransactionScope类的使用
(转)C#语言中TransactionScope类的使用            
// 设置事务超时时间为60秒
(转)C#语言中TransactionScope类的使用
            transactionOption.Timeout = new TimeSpan(0, 0, 60);
(转)C#语言中TransactionScope类的使用
(转)C#语言中TransactionScope类的使用            
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
(转)C#语言中TransactionScope类的使用(转)C#语言中TransactionScope类的使用            
{
(转)C#语言中TransactionScope类的使用                
try
(转)C#语言中TransactionScope类的使用(转)C#语言中TransactionScope类的使用                
{
(转)C#语言中TransactionScope类的使用                    
//在这里实现事务性工作
(转)C#语言中TransactionScope类的使用     //
发送消息
(转)C#语言中TransactionScope类的使用
                    insertMessage(sendUserId, toUser, content, sendedStatus);
(转)C#语言中TransactionScope类的使用
(转)C#语言中TransactionScope类的使用     
//在接收信息表中插入记录
(转)C#语言中TransactionScope类的使用
                    receiveCount += insertReceiveMessage(userids[0], sendUserId, content, "0");
(转)C#语言中TransactionScope类的使用                   
(转)C#语言中TransactionScope类的使用                    
// 没有错误,提交事务
(转)C#语言中TransactionScope类的使用
                    scope.Complete();
(转)C#语言中TransactionScope类的使用                }
(转)C#语言中TransactionScope类的使用(转)C#语言中TransactionScope类的使用                
catch (Exception ex) {
(转)C#语言中TransactionScope类的使用                    
throw new Exception("发送信息异常,原因:"+ex.Message);
(转)C#语言中TransactionScope类的使用                }finally{
                    //
释放资源
                    scope.Dispose();
                  }(转)C#语言中TransactionScope类的使用                               
(转)C#语言中TransactionScope类的使用            }
(转)C#语言中TransactionScope类的使用            
return receiveCount;
(转)C#语言中TransactionScope类的使用        }
(转)C#语言中TransactionScope类的使用
(转)C#语言中TransactionScope类的使用


 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服务器。

 

相关文章:

  • 2021-06-02
  • 2021-12-02
  • 2021-11-28
  • 2021-06-27
  • 2021-12-06
  • 2021-12-30
  • 2021-11-30
  • 2021-06-08
猜你喜欢
  • 2021-08-05
  • 2022-12-23
  • 2021-08-30
  • 2021-09-25
  • 2021-11-24
相关资源
相似解决方案