【问题标题】:Accessing current request context in NHibernate interceptor在 NHibernate 拦截器中访问当前请求上下文
【发布时间】:2011-10-31 14:23:02
【问题描述】:

我正在使用 SharpArchitecture,我正在尝试在基础架构层中为 NHibernate 创建一个简单的 AuditInterceptor。

现在,我的问题是从拦截器中访问当前请求的详细信息。这包括当前用户和服务器收到活动请求的日期/时间。

我应该使用某种 UnitOfWork 模式吗?如果是这样,使 UnitOfWork 对象可用于拦截器代码的好方法是什么?

【问题讨论】:

    标签: .net nhibernate interceptor unit-of-work sharp-architecture


    【解决方案1】:

    据我所知,获取当前用户的最佳位置是:

    System.Threading.Thread.CurrentPrincipal.Identity.Name
    

    我还需要获取当前请求的日期/时间,并决定最好创建一个具有 CurrentDateTime 属性的自定义 IPrincipal,然后我在 Global.asax @ 中设置自定义主体987654324@ 或在我的 MVC ActionFilter 中。

    【讨论】:

    • 谢谢!我决定在应用程序启动时配置 NHibernate 时将“IAuditInfoProvider”对象传递给拦截器构造函数。还不确定我将如何实现它,但至少它可以让我在以后更改它而不影响拦截器代码。我正在考虑创建一个自定义 Context 对象来实现这个(和其他)接口,该接口在 Begin/EndRequest 中进行了修改,并使用我正在使用的任何 IoC 容器注入到对象中。仍然不确定细节,我对 MVC 和 SharpArchitecture 完全陌生,所以这只是一个想法。
    • 当我解决同样的问题时,我看不出如何摆脱使用静态属性/类。您还必须处理线程问题。
    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 2018-05-31
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    相关资源
    最近更新 更多