.NET 4.0的AppDomain:废弃的证据(.NET 4.0 AppDomain: obsol

2019-10-21 06:51发布

我是一个.NET的学生,目前,我们还在学习应用程序域。 我们得到下面的示例代码(.NET 3.5)。 正如预期的那样,它抛出一个SecurityException。 注:TestApp.exe被添加为项目的引用。

Dim file As String = "TestApp.exe"
Dim hostEvidence As Object() = {New Zone(SecurityZone.Internet)}
Dim appDomainEvidence As Evidence = New Evidence(hostEvidence, Nothing)
Dim d As AppDomain = AppDomain.CreateDomain("MyDomain", appDomainEvidence)
d.ExecuteAssembly(file)

当试图在VS2010下.NET 4.0中运行这个我遇到一个问题。 首先,它显示一个警告

'的Public Sub New(hostEvidence()为对象,assemblyEvidence()作为对象)' 已过时:“这种构造是过时的。 请使用这需要EvidenceBase而不是数组构造函数。“。

我改变hostEvidence到EvidenceBase()的类型和警告已经一去不复返了。 但是,试图运行应用程序时,它给出了一个错误。

这种方法隐式使用CAS策略,已废弃由.NET Framework。 为了使兼容性的原因CAS策略,请使用NetFx40_LegacySecurityPolicy配置开关。 请参阅http://go.microsoft.com/fwlink/?LinkID=155570以获取更多信息。

我已经查看的页面,然后链接到如何在沙箱中运行部分信任的代码和读取http://blogs.msdn.com/shawnfa/archive/2009/05/27/coding-with-security-policy-在净4-0隐用途-的-CAS-policy.aspx但我无法理解这一切。

MSDN上的代码示例相比,我目前有相当大,所以用改变我的代码,因此它可以无需添加其他的东西,任何帮助,将是非常赞赏。

Answer 1:

正如你所提供的链接说,.NET不再支持代码访问安全框架的政策部分,为4.0版本。

换句话说,你的教训是.NET 3.5,不涉及到4.0框架。 解决的办法是恢复原来的代码和配置您的项目为目标的3.5框架 (你仍然可以使用Visual Studio 2010)。



文章来源: .NET 4.0 AppDomain: obsoleted Evidence