Я студент .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 () As Object, assemblyEvidence () As Object)» устарело: «Этот конструктор устарел.Пожалуйста, используйте конструктор, который вместо этого использует массивы 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-in-net-4-0-implicit-uses-of-cas-policy.aspx но у меня возникают проблемы с пониманием всего этого.
Пример кода на MSDN довольно большой по сравнению с тем, что у меня есть в настоящее время, поэтому любая помощь по изменению моего кода, чтобы он работал без добавления другихвещи, будут очень цениться.