无法删除C#中的文件 - 未经授权的访问异常

Sar*_*nan 1 c# asp.net c#-4.0

在我的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
Run Code Online (Sandbox Code Playgroud)

有没有办法删除文件?

请指导我解决这个问题.

tch*_*kch 5

首先,你应该收拾流语句转换using条款将自动处理处置行动(即使在例外的情况下) -它会为你节省调试从不闭流来奇怪的问题,在很多时间

using(var fs = new FileStream(...)) 
{
  using(var bw = new BinaryWriter(fs)
  {
       bw.Write(data);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在异常经常出现是因为您当前的进程没有文件的访问权限(无法删除文件) - 要解决它

  • 为您的用户添加完整权限

您可以通过在Windows资源管理器中查找文件,检查其属性并在安全选项卡下找到特定权限来执行此操作.

例如,如果您在IIS上托管您的页面,那么它将被标识为应用程序池标识,该标识符是IIS_IUSRS或NETWORK SERVICE,并且这些方通常不受信任(或者不足以信任以便能够删除file0