Nhibernate Borrow 作为一个轻量级的Nhibernate session管理工具的确很方便. 不过最近发现在IIS7中Burrow有个问题. 错误提示为:"Either workspace is not initialized yet or it is closed", 看样子是Burrow的OpenSessionInView模式有问题了,经检查是NHibernate.Burrow.WebUtil.HttpModule没有工作, 查了下资料,原来是IIS7需要特别的配置.
原来的配置方式是
<system.web>
<httpModules>
<add name="NHibernate.Burrow.WebUtil.HttpModule" type="NHibernate.Burrow.WebUtil.WebUtilHTTPModule, NHibernate.Burrow.WebUtil"/>
</httpModules>
</system.web>
<httpModules>
<add name="NHibernate.Burrow.WebUtil.HttpModule" type="NHibernate.Burrow.WebUtil.WebUtilHTTPModule, NHibernate.Burrow.WebUtil"/>
</httpModules>
</system.web>
现在需要再添加一条即可.
<system.webServer>
<modules>
<remove name="ScriptModule"/>
<add name="NHibernate.Burrow.WebUtil.HttpModule" type="NHibernate.Burrow.WebUtil.WebUtilHTTPModule, NHibernate.Burrow.WebUtil"/>
</modules>
</system.webServer>
<modules>
<remove name="ScriptModule"/>
<add name="NHibernate.Burrow.WebUtil.HttpModule" type="NHibernate.Burrow.WebUtil.WebUtilHTTPModule, NHibernate.Burrow.WebUtil"/>
</modules>
</system.webServer>
另外IIS7中链接Ms SQL Server 2008的时候会提示"
用户 'IIS APPPOOL\DefaultAppPool' 登录失败。
"查了下,原来是应用程序池安全设置问题,简单的办法就是找到程序对应的应用程序池,然后对应的程序池上右键->高级设置->进程模块_标识->选择NetworkService即可.
如果还不行,请打开打开sql server 2005(2008) management studio, 设置安全性->登录名->右击新建登录名->常规->搜索->添加SERVICE用户->服务器角色->勾上sysadmin.