我有一个身份验证方法,它将针对UI发出的所有请求进行调用。当客户端同时发送多个请求时,我收到异常
的HResult = -2146233079 消息=已经有一个与此命令关联的打开的DataReader,必须先关闭它。
我们正在使用NHibernate。在这里,我试图获得所有请求的单行数据。 在映射表时还有一件事,在Ioc中我们使用lifeStyle作为Transient。 有人可以告诉我们如何在NHibernate中处理这个问题吗?
答案 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获取数据的问题。如上所述得到错误。