2012-03-05 94 views
0

我需要創建一個用於在其內存儲的文件,在.NET MVC3應用程序的文件夾寫,但我認爲這個問題是共同所有ASP.Net平臺。 問題是我可以創建文件夾,但無法寫入文件,因爲發生了System.UnauthorizedAccessException。 我也嘗試給當前運行該web應用程序的用戶提供額外的權限,但沒有任何更改。 這是我到目前爲止的代碼:asp.net MVC3創建文件夾,應用程序可以在

if (!System.IO.Directory.Exists(fullPath)) 
{ 
    System.IO.Directory.CreateDirectory(fullPath);      
    var user = System.Security.Principal.WindowsIdentity.GetCurrent().User; 
    var userName = user.Translate(typeof(System.Security.Principal.NTAccount)); 
    var dirInfo = new System.IO.DirectoryInfo(fullPath); 
    var sec = dirInfo.GetAccessControl();      
    sec.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(userName, 
        System.Security.AccessControl.FileSystemRights.Modify, 
        System.Security.AccessControl.AccessControlType.Allow) 
        ); 
    dirInfo.SetAccessControl(sec);      
    System.IO.Directory.CreateDirectory(fullPath);      
} 
string fullPathFileName = System.IO.Path.Combine(fullPath, fileName);     
System.IO.File.WriteAllBytes(fullPath, viaggio.Depliant.RawFile); 

太糟糕了,代碼最後一行總是拋出System.UnauthorizedAccessException。 我不是在我的應用中模擬用戶,一切都在預定義的用戶下運行。 我該如何創建一個文件夾並確保應用程序也可以在其中創建文件?

編輯:

我也tryed保存在App_Data特殊文件夾中的文件,但我還是得到了System.UnauthorizedAccessException錯誤。有人可以告訴我爲什麼會發生這種情況?

回答

1

我不想回答我自己的問題,當問題是愚蠢的... 我只是想保存文件沒有一個合適的文件名:你可以看到我使用fullPath變量都用於創建文件夾並保存該文件,而不是使用正確創建的fullPathFileName。 責備我吧!

0

使用App_Data文件夾,報價從http://msdn.microsoft.com/en-us/library/06t2w7da%28v=vs.80%29.aspx

要提高你的ASP.NET應用程序使用的數據的安全性,已經添加了一個名爲的App_Data新的子ASP.NET應用程序。存儲在App_Data文件夾中的文件不會響應直接HTTP請求而返回,這會使App_Data文件夾成爲與您的應用程序一起存儲的數據的推薦位置,包括.mdf(SQL Server Express Edition),.mdb(Microsoft Access)或XML文件。請注意,使用App_Data文件夾存儲應用程序數據時,應用程序的標識具有對App_Data文件夾的讀寫權限。

+0

我不能使用App_Data文件夾:需要上傳很多的文件,可能是大了,我的要求是解耦數據文件夾 – themarcuz 2012-03-05 13:50:48

+0

應用程序部署。此外,我tryed在偶數保存文件App_Data文件夾(暫時解決並繼續開發),但它不起作用...同樣的錯誤發生 – themarcuz 2012-03-05 16:13:59

+1

你可以檢查服務器嗎IIS_IUSRS組有讀/寫訪問App_Data文件夾嗎? – 2012-03-05 16:19:26

相關問題