我正在使用HttpContext.Current.Items
根据登录的用户设置租户。为此,我使用以下代码:
protected virtual void Application_BeginRequest()
{
HttpContext.Current.Items["_CurrentTenant"] = Tenant.GetCurrent();
}
protected virtual void Application_EndRequest()
{
var currentTenant = HttpContext.Current.Items["_CurrentTenant"] as Tenant;
if (currentTenant != null)
currentTenant.Dispose();
}
由于HttpContext.Current.Items
仅存在于当前请求中,因此我希望在请求完成后将其销毁。另外,CurrentTenant
对象是完全托管的对象。
因此,是否需要将其放置在EndRequest
中?如果您不这样做会怎样?
答案 0 :(得分:0)
因此,是否需要将其放置在EndRequest中?
只有您知道,在请求末尾放置对象是否是您想要的。确保不再使用它时将其丢弃。如果那是在请求的末尾,那可能是个好地方。
如果不这样做会发生什么?
不会调用.Dispose()
方法。这对于您的特定班级意味着什么,您只能说。普通模式将在终结器中调用.Dispose()
,但是直到那时,它可能需要一段时间。这段时间发生的事情完全取决于为什么首先将其标记为IDisposible
。也许文件没有关闭,连接可能保持打开状态,句柄可能没有返回……只有您知道它是否属于您的课程。