如果在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 = ;
TransactionOptions transactionOption = new TransactionOptions(); //设置事务隔离级别
transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; // 设置事务超时时间为60秒
transactionOption.Timeout = new TimeSpan(, , ); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
{
try
{
//在这里实现事务性工作
//发送消息
insertMessage(sendUserId, toUser, content, sendedStatus); //在接收信息表中插入记录
receiveCount += insertReceiveMessage(userids[], sendUserId, content, ""); // 没有错误,提交事务
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服务器。

最新文章

  1. 4、Python:strip(),split()
  2. 编辑login.sql进行sqlplus登陆设置
  3. 08_Queue(队列UVa 10128)
  4. 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]
  5. eclispse 中集成多个tomcat
  6. Linux中的crontab命令用法
  7. 开启nginx缓存
  8. 解决 VirtualBox 安装windows 8.1 Preview OR Server 2012 R2 Preview 错误
  9. thinkphp phpexcel导出
  10. 使用libcurl进行文件上传
  11. android平板Home键的监听
  12. makefile文件知识点记录
  13. 利用QuickCHM制作chm
  14. JVM进程启动会启动哪些线程?
  15. CSRF、XSS、clickjacking、SQL 的攻击与防御
  16. CentOS7(64) yum安装、配置PostgreSQL 11
  17. 从零开始学spring cloud(十) -------- hystrix简单代码示例
  18. codeforces474D
  19. 创建一个Django项目的基本步骤
  20. Scrapy框架基本使用

热门文章

  1. ActionCable的部署(参考Gorails)
  2. vi常用快捷键
  3. 【PowerDesigner】【2】将工具栏显示出来
  4. element upload 一次性上传多张图片(包含自定义上传不走action)
  5. python-django rest framework框架之序列化
  6. sql百万级查询优化(转)
  7. Logstash 基础入门
  8. dubbo初认知(dubbo和springCloud关系,在微服务架构中的作用等)(持续更新中)
  9. jstack Dump 日志文件中的线程状态
  10. AAC ADTS格式分析