COM+事务处理,Web Service,错误,高手请支持。
语言: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)