加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:42:57 所属栏目:asp.Net 来源:网络整理
导读:我在我的mvc ef unity应用程序中遇到更高负载(每秒10个请求)的随机错误(每天几个): 连接未关闭/连接的当前状态正在连接 Count查询死锁(没有显式事务) 已添加具有相同键的项目.在解析DbContext时在System.Data.Entity.DbContext.SetTEntity中 远程主机关闭了
我在我的mvc ef unity应用程序中遇到更高负载(每秒10个请求)的随机错误(每天几个):

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

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

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

解决方法

经过进一步调查后,我发现请求处理线程有时会从其他线程窃取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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读