簡體   English   中英

無法刪除C#中的文件-未經授權的訪問異常

[英]Can't delete a file in C# - unauthorized access exception

在我的ASP.Net Web應用程序中,我已經在HTML 5畫布上加載了一個圖像,並允許用戶在圖像上繪制一些圖形(矩形框)。 用戶在圖像上完成繪圖后,我必須將圖像以相同的名稱保存到服務器的相同位置。

我正在使用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

有什么辦法可以刪除文件嗎?

請引導我解決此問題。

首先,您應該將流語句打包到using子句中,該子句將自動處理dispose操作(即使發生異常)-在調試來自未關閉流的奇怪問題時,它將為您節省大量時間

using(var fs = new FileStream(...)) 
{
  using(var bw = new BinaryWriter(fs)
  {
       bw.Write(data);
  }
}

現在,通常會出現異常,因為您當前的進程沒有文件訪問權限(無法刪除文件)-解決該問題

  • 為您的用戶添加完整權限

您可以通過在Windows資源管理器中找到文件,檢查其屬性,然后在“安全性”選項卡下找到特定的權限來執行此操作。

例如,如果您將頁面托管在IIS上,則該頁面將被標識為應用程序池標識,即IIS_IUSRS或NETWORK SERVICE,並且通常不信任這些參與方(或信任程度不足以刪除文件0)

我認為,這與特權有關。 當用戶嘗試連接到您的網站時,IIS會將連接分配給IUSER_ComputerName帳戶,該帳戶屬於來賓組。 該組具有安全限制。 嘗試提升對IUSER_ComputerName的訪問。 在這里可以找到更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM