Соединение / читатель NHibernate закрыто из контекста ajax - PullRequest
0 голосов
/ 11 марта 2009

У меня возникли проблемы с использованием NHibernate, когда я выполняю ajax-вызовы с использованием JQuery.

Я получаю различные исключения относительно закрытия соединения или считывателя, например:

«Недопустимая попытка вызова Read, когда читатель закрыт».

Кто-нибудь знает, как это исправить?

Ответы [ 3 ]

0 голосов
/ 12 марта 2009

Что ж, вызов выполняется с тем же параметром, и все, что я могу вам показать, это простой вызов Linq to NHibernate для получения сотрудника по имени пользователя == name - где name - это передаваемый параметр.

Так оно и есть:

return Session.Linq (). Single (e => e == "Джон");

У меня была точка останова на этой строке, и она отлично работает, пока она не вызывается из вызываемого действия с использованием JQuery.getJSON

У меня также есть другие вызовы того же рода, и они также, похоже, не работают в этом контексте.

0 голосов
/ 12 марта 2009
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));
    }
}
0 голосов
/ 11 марта 2009

Убедитесь, что вы правильно инициализируете свое соединение и не закрываете его из .NET, прежде чем пытаться что-то прочитать.

Кажется, вы пытаетесь получить информацию, пока она еще не открыта или вы уже закрыли ее.

Наконец, пытались ли вы ранее сделать AJAX с вашим приложением, используя другие фреймворки или объект XMLHttpRequest напрямую? Если нет, попробуйте. Если проблема сохраняется, вы можете быть уверены, что проблема на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...