首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IIS线程的NHIbernateIntegration ISessionManager问题

IIS线程的NHIbernateIntegration ISessionManager问题
EN

Stack Overflow用户
提问于 2011-07-26 21:52:32
回答 1查看 489关注 0票数 1

ASP.NET应用程序最近升级到NHibernate 3.10GA、Castle2.5.2并使用Castle.Facilities.NHibernateIntegration,我们看到了一个非常奇怪的问题。我们使用来自NHibernateIntegration的NHibernateIntegration的Web.SessionWebModule组件来管理请求响应循环,并将其配置为isWeb=true。

我们的应用程序返回一个url编码参数的页面,这个页面随后也会进行一些web服务调用。

这个问题时断时续地发生,并且表现为一个NHibernate.LazyInitializationException --无法初始化代理--没有会话错误,这是由于延迟加载主对象之间的多对一关系造成的。这意味着会话对象在页面的请求-响应循环中丢失。

我们决定在OnBeginRequest和OnEndRequest方法中调试Castle.Facilities.NHibernation,并添加了一些调试语句来标识线程。我们发现的情况如下:

在出现错误的情况下,OnBeginRequest中的OnBeginRequest与OnEndRequest中的threadId不匹配;而且,原始线程似乎用于其他请求和响应。当初始页面请求最终被返回时,它的三个不匹配它启动的原始的三次请求。有人见过这样的东西吗?

这是调试数据。注9表示根据log4net的起始线程

代码语言:javascript
运行
复制
[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

注意第一行,也是最后一行,显示页请求起源于线程9,但返回在线程6中。

EN

回答 1

Stack Overflow用户

发布于 2011-07-27 13:58:40

我想你是在IIS7和asp.net 2.0上?如果是,请尝试设置MaxConcurrentRequestsPerCPU

http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6837066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档