【发布时间】:2011-09-06 14:18:54
【问题描述】:
我有一个服务器应用程序,其中有 3 个场景,我似乎需要不同类型的休眠会话:
- 直接从服务器本身调用存储库(在引导时)
- 来自 Ria 服务(默认 ASP.NET Memberschip 服务)对存储库的调用
- 来自 WCF 服务的对存储库的调用
目前我已经用这样的Sharparch设置了我的休眠配置
/// <summary>
/// Due to issues on IIS7, the NHibernate initialization cannot reside in Init() but
/// must only be called once. Consequently, we invoke a thread-safe singleton class to
/// ensure it's only initialized once.
/// </summary>
protected void Application_BeginRequest(object sender, EventArgs e)
{
NHibernateInitializer.Instance().InitializeNHibernateOnce(
() => InitializeNHibernateSession());
BootStrapOnce();
}
private void InitializeNHibernateSession()
{
NHibernateSession.Init(
wcfSessionStorage,
new string[] { Server.MapPath("~/bin/bla.Interfaces.dll") },
Server.MapPath("~/Web.config"));
}
这适用于第三种情况,但不适用于前两种情况。 它似乎需要一些 wcf-session 特定的上下文。
SharpArch Init 方法似乎可以防止使用另一种类型的会话存储重新初始化它;
为三种不同的上下文创建不同会话的最佳方法是什么?
在我看来,这篇文章似乎与 this one 有关,这帮助我找到了正确的方向,但到目前为止我还没有找到解决方案。
【问题讨论】:
标签: wcf nhibernate session ria s#arp-architecture