我正在使用全局异常处理程序处理未处理的异常。在处理请求期间发生未处理的异常时,控制器的dispose方法是否被调用? (在MVC和Web API中都有?)
例如,我试图在整个请求中使用相同的EF dbcontext。使用这个基类是否安全:
public abstract class BaseController : Controller
{
public BaseController()
{
Database = new DatabaseContext();
}
protected DatabaseContext Database { get; set; }
protected override void Dispose(bool disposing)
{
Database.Dispose();
base.Dispose(disposing);
}
}
答案 0 :(得分:0)
迟到的答复,但是......我不确定是否有处理,保证在所有边缘情况下运行。但是你应该很容易测试你的场景。
据说,根本没有处理你的dbcontext实际上并不重要。 AAs原则应该作为良好做法。但是,正如Jon Gallants博客文章here所指出的,根据MS开发者的说法,这是没有必要的。因此,它很可能根本不重要,在极少数情况下,你的dbcontext没有被处理掉。
除此之外我认为只要你尊重你的语境边界就应该对你安全。 I.E不会在请求中的不同线程上以并行方式运行操作,例如,使用此上下文实例。