当我在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
}
}
答案 0 :(得分:0)
好的我明白了现在PostRequestHandlerExecute触发页面完成执行所以名称
private void Application_EndRequest(object sender,EventArgs e)
有点混乱,这就是出现问题的原因。