2013-05-31 54 views
0

在我的ASP.Net Web應用程序中,我在HTML 5畫布上加載了一個圖像,並允許用戶在圖像上繪製一些圖形(矩形框)。一旦用戶在圖像上完成他們的圖紙,我必須將圖像保存回具有相同位置的相同名稱的服務器。無法刪除C#中的文件 - 未經授權的訪問異常

我正在使用AJAX將圖像數據傳輸到服務器。這部分成功完成。 在我的服務器代碼中,首先嚐試刪除文件,然後在同一位置創建一個具有相同名稱的新文件。

所以,當我刪除的文件,它是提高UnAuthorizedAccessException is handled by user code Access to the path 'D:\vs-2010projects\delete_sample\delete_sample\myimages\page_1.png' is denied.

這裏是我的服務器端的C#代碼...

[WebMethod()] 
public static void UploadImage(string imageData) 
{ 
    byte[] data = Convert.FromBase64String(imageData); 
    if(File.Exists("D:\\vs-2010projects\\delete_sample\\delete_sample\\myimages\\page_1.png")) 
    { 
     File.Delete("D:\\vs-2010projects\\delete_sample\\delete_sample\\myimages\\page_1.png"); 
    } 

    FileStream fs = new FileStream("D:\\vs-2010projects\\delete_sample\\delete_sample\\myimages\\page_1.png", FileMode.Create); 
    BinaryWriter bw = new BinaryWriter(fs); 
    bw.Write(data); 
    bw.Close(); 
}//UploadImage 

有什麼辦法刪除一個文件?

請指導我解決這個問題。

回答

4

首先,你應該收拾流語句轉換爲using條款將自動處理處置行動(即使在例外的情況下) - 它會爲你節省調試從不閉流

未來奇怪的問題在很多時間
using(var fs = new FileStream(...)) 
{ 
    using(var bw = new BinaryWriter(fs) 
    { 
     bw.Write(data); 
    } 
} 

現在除了經常來,因爲你的當前進程不具有對文件的訪問權限(無法刪除文件) - 解決它

  • 添加完全權限的用戶

您可以通過在Windows資源管理器中查找文件,檢查其屬性並在安全選項卡下找到特定的權限。

例如,如果你的主機您的IIS,然後它被識別爲應用程序池標識頁,其中要麼IIS_IUSRS或網絡服務和這些當事方通常不信任(或沒有足夠的信任,能夠刪除file0

+0

我添加了你的代碼,並且我的圖像文件夾也有完整的權限。我正在使用iis 5和窗口s xp.But仍存在相同的錯誤持續 – Saravanan

+0

哪些用戶可以完全訪問此文件夾? – tchrikch

+0

我使用的是windows xp sp2.so,它不會顯示我用戶的信息。一般來說,當右鍵單擊該文件夾時(共享和安全),我可以在網絡共享選項中標記完全控制權。如何查看? – Saravanan

1

我認爲,它與特權有關,當用戶嘗試連接到您的網站時,IIS將連接分配給屬於Guests組的IUSER_ComputerName帳戶,該組具有安全限制,嘗試提升IUSER_ComputerName More can be found here