2012-01-31 67 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。

回答

相關問題