ASP.NET控制器什么时候被销毁?

Mar*_*lef 3 c# asp.net-mvc garbage-collection

根据这个答案,ASP.NET MVC创建了一个控制器类的新实例来响应每个请求.

我的问题是,控制器实例什么时候被销毁?

到目前为止,我一直在假设(可能不正确)这些实例在每个响应结束时被销毁,但是一些数据库池问题让我认为它们可能留给了垃圾收集器.有没有人对此有任何见解?

Sam*_*wad 6

控制器留给垃圾收集器清理.但是,如果要在清除旧控制器之前发出新请求,则不应影响新请求,因为将为该新请求创建具有新上下文的新控制器.

如果您遇到数据库问题,可能来自您如何处理读/写后端数据库的问题.如果在B发生更改之前实例化了A,则DB上下文"A"不知道在另一个DB上下文"B"中发生的更改.不确定这是否是你遇到的问题.

  • 我相信我找到了自己的问题的答案,即覆盖OnResultExecuted()方法.这允许我在控制器方法完成执行后执行一些代码,而无需等待垃圾收集器释放资源. (3认同)