使用 IIS 7 的 NHibernate 会话

Posted

技术标签:

【中文标题】使用 IIS 7 的 NHibernate 会话【英文标题】:NHibernate Session with IIS 7 【发布时间】:2009-07-01 17:48:59 【问题描述】:

我有一个使用 NHibernate 的 ASP.NET MVC 应用程序,该应用程序在通过 VS2008 虚拟 Web 服务器运行时运行良好,但是当我尝试通过本地 IIS 服务器运行该站点时,我不断收到此 NHibernate 错误:没有会话绑定到当前上下文。我不知道发生了什么。我错过了什么吗?我只是让我的 IIS 默认网站指向运行 Default.aspx 页面的应用程序的 Web 目录。有任何想法吗?谢谢

【问题讨论】:

【参考方案1】:

您是否使用 HttpHandler 或 HttpModule 管理上下文?对于这些,IIS7 需要在 web.config 中使用不同的配置组。

<system.webServer>
 <modules></modules>
 <handlers></handlers>
</system.webServer>

这应该在&lt;system.web /&gt; 节点之外。

您可能已经有&lt;httpHandlers /&gt;&lt;httpModules /&gt; 部分,它们适用于 IIS6,但不适用于 IIS7,除非您在旧模式下运行。

如果您在 EndRequest 事件触发时结束会话,也有可能是由对图像或其他静态资源的请求触发的,该请求将在调用您的操作方法之前结束其请求。

【讨论】:

非常感谢!这正好解决了我的问题。谢谢(你的)信息。哈,我刚刚注意到 web.config 文件中有一条关于此的评论。我想我应该看起来更努力。:P

以上是关于使用 IIS 7 的 NHibernate 会话的主要内容,如果未能解决你的问题,请参考以下文章

会话超时在 IIS 7 中如何工作?

ASP.NET MVC、NHibernate 会话和 NHibernate 事件

NHibernate 会话管理建议

WPF MVVM 中的 NHibernate 会话

NHibernate 将会话传递到存储库

将 NHibernate 开放会话合并到 DB(耦合 NHibernate 和 DB 会话)