我在ASP.NET 4.5.1中有一个webservice(Service.svc.cs)。
我有一个叫做的方法 "公共字符串UploadData(Guid id,string [] data)"
客户端使用字符串调用此方法,服务器将数据存储在SQL-Server数据库中,但不提交或回滚此DbTransaction。
然后,同一客户端(例如5秒钟后)应调用另外两种方法之一: " CommitData(Guid id)"要么 " RollbackData(Guid id)"
根据方法,服务器应提交或回滚事务。如果客户端在30秒内未调用,则应回滚该事务。
我已经尝试将事务存储在服务器的内存中,但是事务处理已损坏。事务中的某些值(如连接)将重置为null。因此提交或回滚不起作用。
在Web服务调用之间保留System.Data.Common.DbTransaction的最佳方法是什么?
答案 0 :(得分:0)
一种方法是,
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
属性设置为服务类TransactionData { DbTransaction, StartDate }
static
字典IDictionary<GUID, TransactionData> transactions;
您可以尝试使用Session而不是Dictionary ...无论如何,如果您在IIS下托管,几乎没有办法保留除外部存储之外的持久性数据......但这可以适用于您的情况