我是一个.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上的代码示例相比,我目前有相当大,所以用改变我的代码,因此它可以无需添加其他的东西,任何帮助,将是非常赞赏。