我正在尝试创建一个只读访问文件系统的Sandbox App域。我写的代码是
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, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 失败。
如果我将App Domain上的FileIOPermission更改为具有完全访问权限,则运行正常。我是否需要在程序集中加载我正在加载到应用程序域中以表示它只需要对文件系统的读访问权?
我正在使用.Net 4.0。
答案 0 :(得分:1)