【问题标题】:Global asax and application_endrequest asp.net全局 asax 和 application_endrequest asp.net
【发布时间】:2012-04-16 12:40:00
【问题描述】:

当我在global.asax 中运行我的方法时,它不会运行,而当我使用IHttp 模块时它正在运行。请给任何建议。 可能是因为:

 context.PostRequestHandlerExecute += new EventHandler(Application_EndRequest);

没有Module可以调用吗?

代码示例:

我运行的方法:

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

【问题讨论】:

    标签: asp.net nhibernate session global-asax asp.net-session


    【解决方案1】:

    好的,我现在明白 PostRequestHandlerExecute 触发页面完成执行,所以

    的名称

    private void Application_EndRequest(object sender, EventArgs e)

    有点混乱,这就是出现问题的原因。

    【讨论】:

    • 我不知道你刚才说了什么。
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多