我正在尝试创建一个对文件系统具有只读访问权限的沙盒应用程序域。我为此编写的代码是
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”类型的权限失败。
如果我将应用程序域上的 FileIOPermission 更改为具有完全访问权限,它运行正常。我在加载到应用程序域的程序集中是否需要更改某些内容,以说明它只需要对文件系统的读取访问权限?
我正在使用.Net 4.0。