Загрузка сборки в домен приложения с более низким уровнем безопасности - PullRequest
2 голосов
/ 31 января 2012

Я пытаюсь создать домен приложения для песочницы, который имеет доступ только для чтения к файловой системе.Код, который я написал для этого:

    var ps = new PermissionSet(PermissionState.None);
    ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
    var f = new FileIOPermission(PermissionState.None);
    f.AllLocalFiles = FileIOPermissionAccess.Read;
    ps.AddPermission(f);

    AppDomain domain = AppDomain.CreateDomain("MyDomain",
        null,
        new AppDomainSetup { ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) },
        ps                
        );
    string pathToDll = @"c:\temp\test.dll";
    string thirdPartyFullName = "MyTest.Test";
    IPlugin myObject = (IPlugin)domain.CreateInstanceFromAndUnwrap(pathToDll, thirdPartyFullName);

Это почти работает, за исключением ошибок в последней строке с этим исключением

Запрос разрешениятипа 'System.Security.Permissions.FileIOPermission, mscorlib, Версия = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089' не удалось.

Если я изменяю FileIOPermission в Домене приложения, чтобы иметь полныйдоступ работает нормально.Есть ли что-то, что мне нужно изменить в сборке, которую я загружаю в домен приложения, чтобы сказать, что ему нужен только доступ для чтения к файловой системе?

Я использую .Net 4.0.

1 Ответ

1 голос
/ 31 января 2012

Я думаю, что вам, вероятно, также нужно

FileIOPermissionAccess.PathDiscovery

http://msdn.microsoft.com/en-us/library/y7h7t2a2.aspx

...