最佳答案
我正在对我的一个更大的 MVC 应用程序进行重大的重构/速度调整。现在,它已经部署到生产环境几个月了,我开始在连接池中等待连接的时候出现超时。我已经追踪到问题的连接没有得到正确处理。
有鉴于此,我对我的基本控制器做了以下更改:
public class MyBaseController : Controller
{
private ConfigurationManager configManager; // Manages the data context.
public MyBaseController()
{
configManager = new ConfigurationManager();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (this.configManager != null)
{
this.configManager.Dispose();
this.configManager = null;
}
}
base.Dispose(disposing);
}
}
现在,我有两个问题:
configManager
管理将 IQueryable<>
参数暴露给
观点,我需要确保 Dispose()
将不会被称为
在视图完成渲染之前在控制器上。Dispose()
?或者,MVC 框架留下了
到垃圾收集器