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