小编icr*_*crf的帖子

System.Web.Providers的OptimisticConcurrencyException

我正在使用Microsoft 的新Universal Develors进行SQL Server会话.SQL Server上的旧会话实现需要一个作业(每分钟运行一次)来清除过期的会话.新的一个检查并清除每个请求.由于我实际上是在SQL Azure中运行,因此我没有SQL Agent来安排作业,所以这听起来像是一种合理的方式(不,我不想为会话支付Azure Cache).

问题是当多个用户同时访问该站点时,他们都试图同时清除相同的过期会话,第二个获得乐观的并发异常.

System.Data.OptimisticConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
   at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   at System.Web.Providers.DefaultSessionStateProvider.PurgeExpiredSessions()
   at System.Web.Providers.DefaultSessionStateProvider.PurgeIfNeeded()
   at System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData)
   at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)

我正在使用ELMAH进行错误记录,这显示出一些频率.在我尝试配置ELMAH以忽略错误之前,有没有人知道一种方法来阻止错误发生在第一位?是否有一些我缺少的新提供商的配置?

sql-server asp.net asp.net-mvc optimistic-concurrency

6
推荐指数
1
解决办法
902
查看次数