2010-08-06 61 views
0

當轉移到MVC和現在的IIS7時,我們開始遇到問題,即在每個請求(靜態文件等)上調用了打開和關閉ISession的HTTP模塊。我想避免這樣做NH會話管理的全部重寫,所以我在我的模塊中實現此代碼,以過濾掉一切,但請求要去mvchandler:ASP.Net MVC Nhibernate Session

void context_PreRequestHandlerExecute(object sender, System.EventArgs e) 
{ 
    HttpContext context = ((HttpApplication)sender).Context; 
    Type mvcht = typeof(System.Web.Mvc.MvcHandler); 
    if (context.Handler != null && context.Handler.GetType().IsAssignableFrom(mvcht)) 
     { 
      // Code Here 
     } 
} 

我的問題是,我從來沒有使用此事件在請求管道中。那麼,這樣做有沒有隱藏的陷阱?另外,我是否在爲每個請求運行此檢查時查看性能問題?我還沒有注意到,但這是一個新的,但仍然很小的應用程序。

回答

0

雖然這並不具體解決您的問題,但應該注意的是,開放會話的成本爲very minimal。所以你可能會考慮不在第一時間執行這項檢查。

+0

確實如此,但是推動我的優勢在於,當end_request事件針對某些非MVC請求觸發時,我會在當前會話中隨機獲取null ref異常。 – CocoB 2010-08-06 13:47:52

+0

在這種情況下,我會看看:http://blogs.iis.net/thomad/archive/2006/11/04/precondition-what.aspx - 您可能能夠純粹通過配置模塊。 – DanP 2010-08-06 14:03:00