当一个NHibernate方法通过多个web api请求调用时会发生什么?

时间:2016-11-24 06:57:08

标签: c#-4.0

我有一个身份验证方法,它将针对UI发出的所有请求进行调用。当客户端同时发送多个请求时,我收到异常

  

的HResult = -2146233079          消息=已经有一个与此命令关联的打开的DataReader,必须先关闭它。

我们正在使用NHibernate。在这里,我试图获得所有请求的单行数据。 在映射表时还有一件事,在Ioc中我们使用lifeStyle作为Transient。 有人可以告诉我们如何在NHibernate中处理这个问题吗?

2 个答案:

答案 0 :(得分:0)

似乎您在不同线程中处理的多个客户端请求中使用相同的会话(抱歉,您的问题并不清楚)。检查您的设计 - 您应该在不同的线程中使用不同的会话实例

答案 1 :(得分:0)

感谢您的回复。

打开会话时会检查3个条件。

ISession GetSession()
    {
        if (_session == null)
            _session = _sessionFactory.OpenSession();
        if (_session.IsOpen == false)
            _session = _sessionFactory.OpenSession();
        if (_session.Connection.State != System.Data.ConnectionState.Open)
        {
            _session.Connection.Close();
            _session.Connection.Open();
        }
        return _session;
    } code here

基于此我会得到会话。 对于单api请求它工作正常。但是当发送多个web api请求时,我遇到了从DB获取数据的问题。如上所述得到错误。