asp.net-mvc – 每个请求DbContext发生随机错误

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 每个请求DbContext发生随机错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的mvc ef unity应用程序中遇到更高负载(每秒10个请求)的随机错误(每天几个):

>连接未关闭/连接的当前状态正在连接
> Count查询死锁(没有显式事务)
>已添加具有相同键的项目.在解析DbContext时在System.Data.Entity.DbContext.SetTEntity中
>远程主机关闭了连接.错误代码是0x80070057
>已经有一个与此命令关联的打开DataReader,必须先关闭它. – 我打开MARS摆脱这个(尽管我认为它应该在没有MARS的情况下正常工作,没有嵌套查询),这可能会导致另一个随机错误
>服务器将断开连接,因为客户端驱动程序在会话处于单用户模式时发送了多个请求.

我使用this实现PerRequestLifetimeManager并尝试Unity.Mvc3也没有任何区别.

some hints没有正确处理DbContext.我不确定每个请求是否是问题的原因,因为它似乎是common练习.

@R_403_323@

经过进一步调查后,我发现请求处理线程有时会从其他线程窃取DbContext,因此Rashid的PerRequestLifetimeManager实现可能不是线程安全的.我再次转移到Unity.Mvc3并且错误消失了,当我最后一次尝试时,我肯定犯了一些错误.

唯一没有关系的错误是死锁.他们是由碰撞引起的

SELECT ... FROM X JOIN Y ... JOIN Z ...

BEGIN TRAN
UPDATE Z ...
UPDATE Y ...
COMMIT TRAN

选择锁定Y并想要Z,TRAN锁定Z并想要Y.

猜你在找的asp.Net相关文章