NHibernate 3.3.1 与中等信任错误

Posted

技术标签:

【中文标题】NHibernate 3.3.1 与中等信任错误【英文标题】:NHibernate 3.3.1 with Medium Trust error 【发布时间】: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'。” 【参考方案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(我不记得了)

【讨论】:

以上是关于NHibernate 3.3.1 与中等信任错误的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate 2.1.2 中等信任度

让 NHibernate 以中等信任度处理共享主机

亚音速 3.0 中等信任问题

在共享主机上使用 Castle Windsor 和 NHibernate 设施

中等信任的 LDAP

如何将应用程序转换为在中等信任级别下运行?