We are seeing a very strange problem with an ASP.NET application that was recently upgraded to NHibernate 3.10GA, Castle 2.5.2, and using Castle.Facilities.NHibernateIntegration. We are using ISessionManager from NHibernateIntegration with the Web.SessionWebModule component to manage our request response loop, and have it configured with isWeb=true.
Our application returns a page for a url encoded parameter, and this page also subsequently makes some web-service calls. The problem happens very intermittently, and manifests itself as a NHibernate.LazyInitializationException - Could not initialize proxy - no Session error, caused by the lazy-loading of a many-to-one relationship from the main object. This would suggest that the session object is being lost while in the request-response loop for the page. We decided to debug the OnBeginRequest and OnEndRequest methods in Castle.Facilities.NHibernation, and added some debugging statements to identify the thread. What we found is the following: In the cases where there is an error, the threadId in the OnBeginRequest does not match the threadId in the OnEndRequest; and further it appears that the original thread is being used for other requests and responses. When the initial page request is finally returned it's threadid doesn't match the original threadid it was started in. Has anyone seen anything like this? Here's the debug data. Note the [9] indicates the originating thread according to log4net [9] DEBUG SessionWebModule - On begin request thread id: 9 for MyPage.aspx [9] DEBUG SessionWebModule - On begin request thread id: 9 for example.ashx [9] DEBUG SessionWebModule - On end request thread id: 9 example.ashx [9] DEBUG SessionWebModule - On begin request thread id: 9 for WebService.asmx/js [9] DEBUG SessionWebModule - On end request thread id: 9 for WebService.asmx/js [6] ERROR NHibernate.LazyInitializationException - [error message describing relationship] -Could not initialize proxy - no Session. [6] DEBUG SessionWebModule - On end request thread id: 9 for MyPage.aspx Note the first and last line showing that the page request originated in thread 9, but returned in thread 6. -- You received this message because you are subscribed to the Google Groups "Castle Project Development List" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-devel?hl=en.
