Laj*_*pad 81 vb.net asp.net transactionscope
我正在使用SQL Server和ASP.NET.我有以下功能:
Using js = daoFactory.CreateJoinScope()
Using tran = New Transactions.TransactionScope()
'...
tran.Complete()
End Using
End Using
Run Code Online (Sandbox Code Playgroud)
但是,例外情况' 事务管理器已禁用其对远程/网络事务的支持.'被抛出.
JoinScope的描述:
Public Class JoinScope
Implements IJoinScope
Implements IDisposable
'...
End Class
Run Code Online (Sandbox Code Playgroud)
我已经在另一个具有相同环境的应用程序中以这种方式工作而没有问题,但在这里我遇到了这个问题.我该怎么做才能解决这个问题?
Mag*_*nus 132
确保"分布式事务处理协调器"服务在数据库和客户端上都运行.另外,请确保选中"网络DTC访问","允许远程客户端","允许入站/出站"和"启用提示".
为MS DTC事务启用网络DTC访问
打开"组件服务"管理单元.
要打开组件服务,请单击"启动".在搜索框中,键入dcomcnfg,然后按Enter.
展开控制台树以找到要为其启用网络MS DTC访问的DTC(例如,本地DTC).
在"操作"菜单上,单击"属性".
单击"安全"选项卡并进行以下更改:在"安全设置"中,选中"网络DTC访问"复选框.
在"事务管理器通信"中,选中"允许入站"和"允许出站"复选框.
Tod*_*Tod 10
我间歇地得到了这个问题,我按照这里的说明和其他地方非常相似.全部配置正确.
这个页面:http://sysadminwebsite.wordpress.com/2012/05/29/9/帮我找到了问题所在.
基本上我在两台服务器上都有MSDTC的重复CID.HKEY_CLASSES_ROOT\CID
请参阅:http://msdn.microsoft.com/en-us/library/aa561924.aspx部分确保为MSDTC分配了唯一的CID值
我正在使用虚拟服务器,我们的服务器团队喜欢为每个服务器使用相同的映像.这是一个简单的修复,我们不需要重启.但DTC服务确实需要设置为自动启动,并且需要在重新安装后启动.
我有一个存储过程在“链接服务器”中调用另一个存储过程。当我在ssms中执行它时可以,但是在应用程序中(通过实体框架)调用时,出现此错误。本文对我有帮助,我使用了以下脚本:
EXEC sp_serveroption @server = 'LinkedServer IP or Name',@optname = 'remote proc transaction promotion', @optvalue = 'false' ;
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参见: 链接服务器:合作伙伴事务管理器已禁用其对远程/网络事务的支持
在我的场景中,引发异常是因为我试图在一个已经存在的连接上的TransactionScope中创建一个新的连接实例:
例:
void someFunction()
{
using (var db = new DBContext(GetConnectionString()))
{
using (var transaction = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
someOtherFunction(); // This function opens a new connection within this transaction, causing the exception.
}
}
}
void someOtherFunction()
{
using (var db = new DBContext(GetConnectionString()))
{
db.Whatever // <- Exception.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123886 次 |
| 最近记录: |