NHibernate将在使用运行mysql的共享服务器移动到主机后插入但不会更新

时间:2010-05-07 14:02:25

标签: mysql nhibernate

我有一个运行MVC和Nhibernate(不流利)的站点,在http模块中使用每个请求的标准会话,在本地运行正常(也使用mysql)但在移动到托管服务提供商后没有发布更新语句。

我可以插入但不更新,不会引发异常,我打开了'show_sql'选项,在本地显示正在发布的更新语句,但在服务器上没有记录更新语句。

我不认为NHProf对我来说是一个选项,因为我只能在我的共享服务器上运行asp.net应用程序,有没有其他方法来诊断这样的NH问题?

任何人都有类似的问题吗?

干杯,

A

2 个答案:

答案 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内容记录到文件中,以查看发生的情况。