TransactionScope类的使用
来源:互联网 发布:淘宝客服的技巧 编辑:程序博客网 时间:2024/06/02 05:29
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(0, 0, 60);
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;
}
/// 发送消息
/// </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(0, 0, 60);
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服务器。
- TransactionScope类的使用
- C#语言中TransactionScope类的使用
- WF----事务处理(TransactionScope类的使用)
- C#语言中TransactionScope类的使用
- C#语言中TransactionScope类的使用
- TransactionScope的使用
- TransactionScope的使用
- TransactionScope的使用
- TransactionScope的使用
- C#语言中TransactionScope类的使用(分布式事务)
- .net 2.0 的 Distributed Transactions(使用TransactionScope )
- TransactionScope使用(三)——TransactionScopeOption的使用
- .net如何使用 TransactionScope
- Transact-SQL事务与SqlTransaction和TransactionScope的使用
- TransactionScope使用(一)——简单的实现事务处理
- 使用TransactionScope类定义代码块以参与事务
- TransactionScope的正确用法
- TransactionScope 的错误解决方法
- fopen/fclose/fwrite/fread的使用
- pjmedia MIPS test - gcc vs icc
- 内存cdc双缓冲问题
- SharePoint2010母板页的介绍
- python url 解析
- TransactionScope类的使用
- 区别:Thread.currentThread().getContextClassLoader() and Class.getClassLoader()
- C++虚函数探索笔记(3)——延伸思考:虚函数应用的一些其他情形
- SQL Azure Performance Tuning
- 成功安装mysql后,使用数据库时找不到服务
- Android 1.5 SDK 读取联系人
- 50个c/c++源代码网站
- 获取本机IP
- 【转】写代码如坐禅:你是哪一类程序员