路在何方?

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在 .net 中利用 System.EnterpriseServices 命名空间可以很方便的创建支持事务处理的应用程序。而事务处理是需要系统服务中的 Distributed Transaction Coordinator(DTC) 服务来支持的。如果这个服务没有被启动或者没有正常运行,调用 System.EnterpriseServices 命名空间中的方法就可能出现异常。比如,调用 ServiceDomain.Enter 方法时会出现异常:System.Runtime.InteropServices.COMException : 事务管理器不可用。

一般来说,DTC 服务需要运行在 NT Authority\Network Service 帐号下。否则,也可能出现异常。如果此服务已经运行在别的帐号下,要改成 NT Authority\Network Service,你可以:

  • 点击“开始”,“运行”,键入“services.msc”
  • 在“服务”mmc 中找到 Distributed Transaction Coordinator
  • 右键点击Distributed Transaction Coordinator,在菜单中选择“属性”,在“登录”中选择“此帐户”,帐户输入“NT Authority\Network Service”,密码为空

此时,如果仍然不能正常调用 ServiceDomain.Enter,你可能需要:

  • 点击“开始”,“运行”,键入“msdtc -resetlog”
  • 重新启动系统

另外需要注意的是,%systemroot%/system32 目录下的文件一般不要设置成只读。因为有很多系统服务是需要拥有此目录下一些文件的写权限的。否则很可能一些服务不能被启动或者正常运行。比如,Event Log 服务。

    posted on 2005-05-16 12:42  路在何方?   阅读(501)  评论(0)    收藏  举报