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"/>
希望这将为您提供完整的堆栈跟踪,并允许您进一步调试。
你可能还需要添加这个
<customErrors mode="Off" />
中的system.web
(我不记得了)
【讨论】:
以上是关于NHibernate 3.3.1 与中等信任错误的主要内容,如果未能解决你的问题,请参考以下文章