gpt4 book ai didi

c# - Application_EndRequest 不会在 404 上触发

转载 作者:行者123 更新时间:2023-11-30 16:34:32 26 4
gpt4 key购买 nike

我正在使用 ASP MVC 2 和 Nhibernate。我创建了一个 HTTP 模块,如 NHibernate 13 Summer 中所示,如下所示:

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

private void Application_BeginRequest(object sender, EventArgs e)
{

ISession session = StaticSessionManager.OpenSession();
session.BeginTransaction();
CurrentSessionContext.Bind(session);
}

private void Application_EndRequest(object sender, EventArgs e)
{
ISession session = CurrentSessionContext.Unbind(StaticSessionManager.SessionFactory);
if (session != null)
try
{
session.Transaction.Commit();
}
catch (Exception)
{
session.Transaction.Rollback();
}
finally
{
session.Flush();
session.Close();
}
}

网络配置

<add name="UnitOfWork" type="HttpModules.UnitOfWork"/>

我的问题是 Application_EndRequest 永远不会在出现 404 错误时被调用,所以如果我的 View 没有呈现,我将完全阻止数据库访问,直到我的刷新发生。我是 NHibernate 的新手,所以我不确定我是否遗漏了什么。

最佳答案

您可以在 application_error 中处理和回滚 session 。将 session.close 更改为 session.dispose 并检查它是否尚未处理。

关于c# - Application_EndRequest 不会在 404 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com