我正在对我的一个较大的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);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有两个问题:
configManager管理DataContext将IQueryable<>参数公开给视图,我需要确保Dispose()在视图完成渲染之前不会在控制器上调用.Dispose()呈现视图之前或之后调用Controller?或者,MVC框架是否将其留给了GarbageCollector?