在我的使用InProc會話的ASP.NET應用程序中,Session_End調用另一個對象中的靜態方法來執行特定於會話的清理。這種清理使用了我在應用程序狀態下存儲的共享數據庫連接。在Session_End期間訪問HttpApplicationState
問題是,我看不到如何訪問應用程序狀態而不傳遞它(或者數據庫連接)作爲清理方法的參數。由於我不在請求中,因此我沒有當前的HttpContext,並且找不到任何其他靜態方法來訪問狀態。
我錯過了什麼嗎?
UPDATE:看來我的問題需要進一步澄清,所以讓我試試下面的代碼示例。我希望能夠做的是:
// in Global.asax
void Session_End(object sender, EventArgs e)
{
NeedsCleanup nc = Session["NeedsCleanup"] as NeedsCleanup;
nc.CleanUp();
}
但問題是,反過來CleanUp
方法需要存儲在應用程序狀態信息。我已經在做下面的事情,但這正是我希望避免的;這就是我所說的「......沒有通過......作爲清理方法的一個參數」。
// in Global.asax
void Session_End(object sender, EventArgs e)
{
NeedsCleanup nc = Session["NeedsCleanup"] as NeedsCleanup;
nc.CleanUp(this.Application);
}
我只是不喜歡Global.asax
有知道在哪裏NeedsCleanup
對象獲取信息的想法。這種事情在課堂上更具自我感。
會話屬性是我得到我的對象,清理。它是需要訪問_application_狀態的被調用對象。而這正是麻煩所在。 – DocMax 2008-10-05 05:37:27