COM+事务处理,Web Service,错误,高手请支持。

rupweb 2004-08-10 12:58:50
语言:C#
数据库:(ms sql 2000)。
框架:1.1

结构是这样的:
数据层A访问Database A (ms sql 2000)。
数据层B访问Database B (ms sql 2000)。
商务层C(COM+自动事务处理,继承于System.EnterpriseServices.ServicedComponent),处理事务,访问数据层AB。
Web Service D 访问C层。
winForms客户端E访问Web Service D.

当我在商务层C设置:[Transaction(TransactionOption.Required )],[AutoComplete] 时候,出现如下错误信息,(注释掉上述标记时候系统运行良好,没有错误捕获)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Runtime.InteropServices.COMException (0x8004D024): 该事务管理器已经禁止了它对远程/网络事务的支持。

Server stack trace:
at System.Data.Common.ITransactionExportFactory.Create(UInt32 DTCLength, Byte[] DTCAddr, ITransactionExport& export)
at System.Data.SqlClient.Transaction.CreateTransactionExport(Byte[] dtcAddr, UInt32 dtcLength, ITransaction transaction, ITransactionExport& transactionExport)
at System.Data.SqlClient.Transaction.GetTransactionCookie(Byte[] dtcAddr, ITransaction transaction, ITransactionExport& transactionExport, Byte[]& cookie, Int32& length)
at System.Data.SqlClient.SqlInternalConnection.EnlistNonNullDistributedTransaction(ITransaction transaction)
at System.Data.SqlClient.SqlInternalConnection.EnlistDistributedTransaction(ITransaction newTransaction, Guid newTransactionGuid)
at System.Data.SqlClient.SqlInternalConnection.EnlistDistributedTransaction()
at System.Data.SqlClient.SqlInternalConnection.Activate(Boolean isInTransaction)
at System.Data.SqlClient.SqlConnection.Open()
at Tianchi.RF.Data.DbObject.RunProcedure(String storedProcName, IDataParameter[] parameters, Int32& rowsAffected)
at Tianchi.RF.Data.SystemDb.SystemDbResource.Create(String resourceName)
at Tianchi.RF.Business.BizResource.Create(String resourceName)
at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target, Boolean fExecuteInContext)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]:
at Tianchi.RF.RFServices.Resource.SrvResource.Create(Account& account, Int32 templateID, String resourceName)
--- 内部异常堆栈跟踪的结尾 ---
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Tianchi.RF.RFDesigner.SrvResource.SrvResource.Create(Account& account, Int32 templateID, String resourceName)
at Tianchi.RF.RFDesigner.Frame.Resource_RowChanged(Object sender, DataRowChangeEventArgs e)
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
海峰 2004-08-12
  • 打赏
  • 举报
回复
权限的问题,w2003的安全性更高,用w2000试试
y1900808y 2004-08-11
  • 打赏
  • 举报
回复
我也不清楚,你调试一下看看哪一步出错了,这种问题只有自己最清楚,我也只是根据我的经验做判断.
rupweb 2004-08-11
  • 打赏
  • 举报
回复
谢谢楼上的答复,但是为什么采用本机作为数据库服务器运行时不会出现任何问题呢?
y1900808y 2004-08-10
  • 打赏
  • 举报
回复
应该是你代码的问题,就是说:[Transaction(TransactionOption.Required )],[AutoComplete] 没有错,而是你的函数写错了,当你不用[Transaction(TransactionOption.Required )],[AutoComplete]时,函数不执行事务,所以不报错,而当你使用了[Transaction(TransactionOption.Required )],[AutoComplete]时,函数要执行事务,而你的函数却无法正确执行事务,导致报错,请你把代码贴出来.

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧