2011-06-17 43 views
0

我有與共享的託管服務提供商中等信任環境中運行ASP.NET Web應用程序。下面的代碼會導致拋出SecurityException:在中等信任環境中創建目錄?

private void TestButton_Click(object sender, EventArgs e) 
{ 
    string directory = Server.MapPath("~/MyFolder/") + "_TestDirectory"; 
    if (!Directory.Exists(directory)) 
     Directory.CreateDirectory(directory); 
} 

錯誤的全文是:

System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 
    at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) 
    at System.Security.CodeAccessPermission.Demand() 
    at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) 
    at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity) 
    at ASP.testcreatedirectory_aspx.TestButton_Click(Object sender, EventArgs e) 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
System.Security.Permissions.FileIOPermission 
The Zone of the assembly that failed was: 
MyComputer

對創建子文件夾擁有完全權限的文件夾,所以我不認爲那就是問題所在。這看起來像是在中等信任環境下運行。

這是正常的中等信任的環境中(通過Directory.Create法)禁止新目錄的創建,以及/或者是還有什麼解決方法呢?

回答

0

只要你試圖訪問路徑下的虛擬目錄應用程序是,你應該能夠訪問它在中等信任。您確定您的應用程序標識具有文件夾創建權限嗎?

http://msdn.microsoft.com/en-us/library/aa302425#c09618429_015


編輯:我可能讀了上面的錯誤文檔。看到此鏈接爲好,看來你只有讀,寫,追加和PathDiscovery權限:(

FileIOPermission的限制。這 意味着你只能在 應用程序的虛擬目錄 層次訪問文件。您申請獲得批准 讀,寫,追加和PathDiscovery 權限應用程序的 虛擬目錄層次結構。

http://msdn.microsoft.com/en-us/library/ff648344.aspx