ASP.NET 4.0中的代码访问安全性和动态数据错误

本文关键字:安全性 动态 数据 错误 访问 代码 NET ASP | 更新日期: 2023-09-27 18:25:49

我的MVC c#项目有一些问题。

首先我收到这个错误:级别2的透明度导致AllowPartiallyTrustedCallers程序集中的所有方法在默认情况下变为安全透明,这可能是导致此异常的原因。完整:

安全透明方法"System.Runtime.DiagnosticTrace..ctor(System.String,System.Guid)'访问安全关键方法'System.Runtime.Diagnostic.EtwDiagnosticsTrace.ctor(System.String,System.Guid)'失败。

程序集"System.ServiceModel.Internals,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"用AllowPartiallyTrustedCallersAttribute,并使用级别2的安全性透明度模型。级别2透明度导致中的所有方法允许PartiallyTrustedCallers程序集成为安全透明程序集默认情况下,这可能是导致此异常的原因。"

因此,我在互联网上搜索,发现了两种解决问题的可能性。第一种方法是将这个片段包含在assemblyinfo.cs:中

[assembly: System.Security.AllowPartiallyTrustedCallers]

但一切都没有改变。。

我在谷歌上找到了第二条信息,说如果我把它放在web.config中,它可能会起作用。

<trust legacyCasModel="true" level="Full" />

但当我把这些信息放在web.config中时,我收到了类似的错误

动态操作只能在同质AppDomain 中执行

我不知道我还能做什么…

我认为,将microsoft.practices.unity与ASP.NET 4.0和mvc 4一起使用是问题的主要原因。但根据我的应用程序的工作方式,对我来说使用统一是必要的。

brgds!塞巴斯蒂安。

ASP.NET 4.0中的代码访问安全性和动态数据错误

在.NET 4.0框架中,新的CAS模型防止任何安全透明代码调用安全关键代码

从上面描述的异常来看,您调用的两个方法似乎都属于外部库(命名空间System.Runtime.Diagnostics),而不属于您的代码甚至程序集。

一个外部库方法在尝试访问该库的另一个方法时抛出的事实表明,该库中可能存在错误或某种二进制或配置不匹配问题(根据此线程http://social.msdn.microsoft.com/Forums/en-US/netfxsetup/thread/a8ceb77b-f625-4259-94de-4ae5157ba98c)

"legacyCasModel"切换到非同类(或简称为CAS 1)应用程序域。这意味着动态设置与较旧的CAS设置不兼容。此外,MVC 3在自己的代码中使用了动态(请参阅ASP.NET MVC 3中的ViewBag动态),因此MVC 4很可能也这样做。

您可以尝试将具有System.Runtime.Diagnostics命名空间的程序集添加到web.config文件的FullTrustAssemblySection中,而不是切换到旧版cas 1

http://msdn.microsoft.com/en-us/library/system.web.configuration.fulltrustassembliessection.aspx