当我使用JQuery进行ajax调用时,我在使用NHibernate时遇到了麻烦。
关于连接或读取器被关闭,我得到了不同的例外:
“读取器关闭时无效尝试调用读取”。
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
检查您是否正确初始化连接,而不是在尝试阅读之前从.NET关闭它。
似乎你在尝试获取信息时尚未打开信息,或者你已经关闭了信息。
最后,您是否尝试过使用其他框架或XMLHttpRequest对象直接使用您的应用程序进行一些AJAX?如果没有,试一试。如果问题仍然存在,您可以确定问题出在服务器端。
答案 1 :(得分:0)
使用相同的参数完成调用,我真正可以告诉你的是一个基本的Linq to NHibernate调用,通过username == name获取一个雇员 - 其中name是传入的参数。
所以它只是:
返回Session.Linq()。Single(e => e ==“John”);
我在这一行上有一个断点并且它完美地工作,直到从使用JQuery.getJSON的calld的一个动作调用它
我还有其他类型的调用,在这种情况下它们似乎也失败了。
答案 2 :(得分:0)
protected object GetJsonUserWrong(string name) {
var user = default(User);
using(var session = this.SessionFactory.Open()) {
user = session.Linq<User>().Single(e => e.Name == name);
}
//doing the serialization while the session is closed might not work
//if NHibernate is using proxy objects, this can fail.
return SerializeToJson(user);
}
protected object GetJsonUserRight(string name) {
using(var session = this.SessionFactory.Open()) {
//must do the serialization while the session is open
return SerializeToJson(session.Linq<user>().Single(e => e.Name == name));
}
}