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

s_h*_*s_h 2 c# asp.net-mvc unity-container

我的MVC c#项目有些问题.

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

试图通过安全透明方法 'System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String,的System.Guid)' 来访问安全临界方法"System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String,的System.Guid )'失败了.

大会"System.ServiceModel.Internals,版本= 4.0.0.0,文化=中性公钥= 31bf3856ad364e35"标有AllowPartiallyTrustedCallersAttribute程序,并使用2级安全透明度模式.2级透明度导致AllowPartiallyTrustedCallers程序集中的所有方法默认情况下变为透明,这可能是导致此异常的原因.

因此,我在互联网上搜索,找到了解决它的两种可能性.第一部分将此代码段包含在assemblyinfo.cs:

[assembly: System.Security.AllowPartiallyTrustedCallers]
Run Code Online (Sandbox Code Playgroud)

但没有改变..

谷歌搜索我发现第二个信息说,如果我放入web.config它可能工作.

<trust legacyCasModel="true" level="Full" />
Run Code Online (Sandbox Code Playgroud)

但是,当我把信息放在web.config我接收和错误之类的时候

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

我不知道还有什么需要做的......

我相信使用microsoft.practices.unity与ASP.NET 4.0和mvc 4,是问题的主要原因.但根据我的应用程序的工作方式,我必须使用unity.

brgds!塞巴斯蒂安.

use*_*883 5

在.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文件的FullTrustAssembliesSection,而不是切换到旧版cas 1

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