使用 NHibernate 4.1.0 获取 "Inheritance security rules violated while overriding member: 'Antlr.Runtime.RecognitionException.GetObjectData..."

Getting "Inheritance security rules violated while overriding member: 'Antlr.Runtime.RecognitionException.GetObjectData..." with NHibernate 4.1.0

我在 Nhibernate 4.1.0 的发布模式下使用 c# ASP.NET .NET 4.5.1 上的应用程序收到此错误:

Inheritance security rules violated while overriding member: 'Antlr.Runtime.RecognitionException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.

作为 Antl3 一个包含的 dll,我不知道是什么问题

这个 Whosebug post 为我指明了正确的方向。

我需要一个 Antl3 版本,它的 GetObjectData 标有 SecurityCriticalAttribute 并且显然不是 NHibernate 4.1.0 源附带的版本,所以我从 here 获得了 Antl3 源并查看了 [下的 RecognitionException =20=].net40-client 并且看到它是正确的:

        [SecurityCritical]
    public override void GetObjectData(SerializationInfo info, StreamingContext context)
    {

所以我已经创建了它,替换了 NHibernate-4.1.0.GA-src\lib\net 文件夹中生成的 dll,等等,现在应用程序运行良好

这很可能是因为您的应用程序需要“更多信任”。您可以通过在 web.config(在 system.web 内)中添加 <trust level="Full" /> 来更改应用程序的信任级别。

<system.web>
    <trust level="Full" />
<system.web>

有关 ASP.NET 信任级别的更多信息,请参见 here