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