2012-04-16 37 views
0

當我在global.asax運行我的方法它不會運行,當我使用IHttp模塊它正在工作。請給任何建議。 也許是因爲:全球asax和application_endrequest asp.net

context.PostRequestHandlerExecute += new EventHandler(Application_EndRequest); 

是否可以在沒有模塊的情況下調用它?

代碼示例:

的方法,我跑:

public static void EndSession() 
    { 
     HttpContext context = HttpContext.Current; 
     if (context.Session != null) 
     { 
      ISession session = context.Session["Session"] as ISession; 
      if (context.Session["Session"] != null) 
      { 
       if (!session.Transaction.IsActive) 
        OpenTransaction(session); 
       session.Flush(); 
       CommitTransaction(session); 
       session.Close(); 
       context.Session["Session"] = null; 
      } 
     } 
    } 

全球:

private void Application_EndRequest(object sender, EventArgs e) 
    { 
     NhSessionHelper.EndSession(); 
    } 

的IHttpModule:

namespace MME.DAL.SesionManager 
     { 
    internal class SessionRequest : IHttpModule 
    { 
     #region Public Methods 

     public void Dispose() 
     { 
     } 

     public void Init(HttpApplication context) 
     { 
      context.PostRequestHandlerExecute += new EventHandler(Application_EndRequest); 
     } 

     #endregion 

     #region Private Methods 

     private void Application_EndRequest(object sender, EventArgs e) 
     { 
      NhSessionHelper.EndSession(); 
     } 

     #endregion 
    } 
} 

回答

0

好吧,我明白現在PostRequestHandlerExecute觸發頁面完成執行,以便

私人無效Application_EndRequest的名稱(對象發件人,EventArgs的)

是有點混亂,這就是爲什麼有一個問題。

+5

我不知道你剛剛說了什麼。 – md1337 2013-05-21 15:59:36