我在mvc + ef + unity应用程序中遇到随机错误(每天几次),负载更高(每秒10次请求):
我使用PerRequestLifetimeManager的this实现并尝试了Unity.Mvc3,没有任何区别。
答案 0 :(得分:3)
经过进一步调查后,我发现请求处理线程有时会从其他线程窃取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