0

メソッドを実行すると実行されglobal.asaxず、IHttpモジュールを使用すると機能します。何かアドバイスをお願いします。多分それは原因です:

 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
    }
}
4

1 に答える 1

0

わかりました。PostRequestHandlerExecuteがページを起動して実行を終了するので、

private void Application_EndRequest(object sender、EventArgs e)

少し混乱しました、そしてそれが問題があった理由です。

于 2012-04-23T12:35:54.540 に答える