我有一个运行MVC和Nhibernate(不流利)的站点,在http模块中使用每个请求的标准会话,在本地运行正常(也使用mysql)但在移动到托管服务提供商后没有发布更新语句。
我可以插入但不更新,不会引发异常,我打开了'show_sql'选项,在本地显示正在发布的更新语句,但在服务器上没有记录更新语句。
我不认为NHProf对我来说是一个选项,因为我只能在我的共享服务器上运行asp.net应用程序,有没有其他方法来诊断这样的NH问题?
任何人都有类似的问题吗?
干杯,
A
答案 0 :(得分:1)
问题是我已经从IIS5的本地开发环境迁移到IIS7的共享服务器,IIS7有不同的语法来注册http模块,因此我的NHibernate会话模块没有触发,导致最初描述的行为。
要解决此问题,我将system.web下的web.config中的modules部分添加到system.webServer,您可以将验证validateIntegratedModeConfiguration =“false”键添加到system.webServer部分,这将允许您的配置具有在两个部分下注册的模块,因此您可以为IIS5 / IIS7配置相同的配置。
答案 1 :(得分:0)
NHProf是您的选择!
您可以让它登录到文件,然后再选择该文件。这是您需要的log4net配置:
<log4net>
<appender name="NHProfAppender"
type="HibernatingRhinos.Profiler.Appender.NHibernate.NHProfOfflineAppender,
HibernatingRhinos.Profiler.Appender" >
<file value="nhprof_output.nhprof" />
</appender>
<logger name="HibernatingRhinos.Profiler.Appender.NHibernate.NHProfAppender.Setup">
<appender-ref ref="NHProfAppender"/>
</logger>
</log4net>
或者,如果您没有NHProf许可证,可以将NHibernate内容记录到文件中,以查看发生的情况。