2012-01-31 77 views
2

我正在尝试创建一个只读访问文件系统的Sandbox应用程序域。我已经写了这样做的代码是将程序集加载到安全性较低的应用程序域中

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。

回答

相关问题