【问题标题】:NHibernate 3.3.1 with Medium Trust errorNHibernate 3.3.1 与中等信任错误
【发布时间】:2012-07-28 17:12:02
【问题描述】:

我以中等信任度使用 NHibernate 3.3.1。它抛出一个安全异常。 在 NHibernate 3.3.1 中说它与中等信任兼容。

有什么先决条件吗?

【问题讨论】:

  • 我在中等信任(Rackspace 云)中使用 NH3.3.1,你得到的实际错误是什么?
  • 葡萄牙语错误:“Falha na solicitação da permissão de tipo 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'。”

标签: nhibernate medium-trust


【解决方案1】:

我已经成功使用NHibernate.DependencyInjection NuGet 包在中等信任环境中使用 NHibernate。

【讨论】:

  • 我也试过了...它在我的项目中添加了对 NHibernate.DependencyInjection.dll 的引用,但仍然抛出 SecurityException。有什么先决条件吗?
  • @Rippo 这很奇怪。那么为什么会有 3.3.1 的包呢?在任何情况下,请记住并非所有“中等信任”配置都是相同的。
  • 这是一个你需要问兰迪的问题,我相信他使用它是为了其他原因而不是中等信任。 nhibernate.jira.com/browse/NH-2857
  • 真的,我的托管中的信任配置不是中等的,它是自定义的。 NH 3.31 有效。
【解决方案2】:

NHibernate 支持中等信任,请阅读this article

它描述了如何实现你想要的。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题并尝试了所有建议来解决它(包括 DependencyInjection), 但只有一个帮助了我:

    我已将以下代码添加到我的 Global.asax 文件中

    protected void Application_Start()
    {
        NHibernate.Cfg.Environment.UseReflectionOptimizer = false;
        ...
    }
    

    并在配置文件中禁用批处理(最后一个属性)

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
      <session-factory name="NHibernate.Test">
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="connection.connection_string">Server=........</property>
        <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
        <property name="query.substitutions">true=1;false=0</property>
        <property name="show_sql">false</property>
        <property name="adonet.batch_size">0</property>
      </session-factory>
    </hibernate-configuration>
    

    注意,这会导致性能问题

    【讨论】:

    • 对于“System.Security.Permissions.ReflectionPermission”,使用 NHibernate 或 ActiveRecord,第一个代码与应用程序启动或 AR 初始化解决问题!这条喜欢的线“NHibernate.Cfg.Environment.UseReflectionOptimizer = false;”非常感谢!
    【解决方案4】:

    您需要获得更详细的错误消息,以便我们进一步诊断。在你的 web.config 中添加这个 system.webserver

    <httpErrors errorMode="Detailed"/>
    

    希望这将为您提供完整的堆栈跟踪,并允许您进一步调试。

    你可能还需要添加这个

    &lt;customErrors mode="Off" /&gt; 中的system.web(我不记得了)

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 2010-10-17
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多