2009-03-11 2 views
0

JQuery를 사용하여 ajax 호출을 수행 할 때 NHibernate를 사용하는 데 문제가 발생했습니다. "독자가 닫힐 때 읽기 호출하는 잘못된 시도"NHibernate 연결/판독기가 Ajax 컨텍스트에서 닫힘

:

나는 연결 또는 독자 중 하나에 대한 다른 예외가 같은 폐쇄 얻을.

아무도이 문제를 해결하는 방법을 알고 있습니까?

+0

jQuery에서 nHibernate에 액세스하려면 "jnHibernate"를 사용합니까? 아니면 그들 사이에 뭔가가 있습니까? (wcf, wse, generic handler, webmethod, ...) – ybo

답변

0

연결을 올바르게 초기화했는지 확인하고 무언가를 읽으려고 시도하기 전에 .NET에서 연결을 닫지 않았는지 확인하십시오.

아직 열어 보지 않았거나 이미 닫은 상태에서 정보를 얻으려는 것 같습니다.

마지막으로 다른 프레임 워크 나 XMLHttpRequest 객체를 직접 사용하여 이전에 앱으로 일부 AJAX를 실행 해 보았습니까? 그렇지 않은 경우 시도해보십시오. 그래도 문제가 계속되면 서버 측에 문제가 있는지 확인할 수 있습니다.

+0

아약스를 사용하여 호출하지 않을 때 호출이 완벽하게 작동합니다. 아약스를 사용할 때 왜 다른지와 다른 문제를 아는 사람이 있는지 질문하는 것이 좋습니다. 내 연결을 직접 처리하지 못하고 빨아 먹기 때문에 내 아약스가 잘 작동합니다. 아약스 컨텍스트에서 NHibernate의 문제입니다. –

+0

오류 메시지에서 세션이 이미 닫힌 후에 읽으려는 시도가 있어야하므로 코드에서 가정을 확인하십시오. 매개 변수 (예 :)가 다른 경우 AJAX 호출에서 페이지 컨텍스트가 다를 수 있습니다. 일부 코드와 더 많은 정보가 도움이 될 것입니다. :) –

0

잘 호출이 같은 매개 변수를 수행하고, 난 정말 당신을 보여줄 수있는 모든 사용자 이름 == 이름으로 직원을 얻을 수있는 기본 Linq에 NHibernate에에 전화입니다 -. 이름에 전달 된 PARAM입니다

그래서 그냥 :

return Session.Linq(). Single (e => e == "John");

나는이 줄에 중단 점이 있고 그것이이 가

또한 같은 종류의 다른 통화를하고, 그들은 또한 같다 JQuery.getJSON

를 사용 calld되는 작업에서 호출 전까지, 완벽하게 작동 이 문맥에서 실패.

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)); 
    } 
}