1

我通过将会话注入 global.asax 中的服务方法来获取会话

1

protected void Application_Start()
{    
  this.RegisterContainer(); 
}

2

private void RegisterContainer()
{
    container.Register<IActivityService>(c => new  ActivityService(SessionFactory.GetCurrentSession()));
}

3 在服务方法中,我将会话作为

using (var transaction = _session.BeginTransaction())
{
    ........................        
}

问题是当并发请求来到这个服务方法时,它正在抛出异常。我知道Nhibernate不支持并发。如何使用Funq Container实现它?

4

1 回答 1

1

默认情况下, ServiceStack 的 IOC将依赖项注册为单例,而您应该为此注册一个临时依赖项,而不是:

container.Register<IActivityService>(c => 
    new ActivityService(SessionFactory.GetCurrentSession()))
.ReusedWithin(ReuseScope.None);

这个前面的问题还显示了使用 NHibernate 和 ServiceStack 的其他注册示例。

于 2016-07-11T18:46:09.007 回答