더 큰 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
관리 하므로 뷰가 렌더링을 완료하기 전에 컨트롤러에서 호출되지 않는지 확인해야합니다 .DataContext
IQueryable<>
Dispose()
Dispose()
뷰가 렌더링되기 전이나 후에 MVC 프레임 워크 가 컨트롤러에서 호출 합니까? 아니면 MVC 프레임 워크가이를 GarbageCollector에 맡깁니까?