不能删除c#中的文件-未授权访问异常

本文关键字:授权 访问 异常 文件 删除 不能 | 更新日期: 2023-09-27 18:16:17

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

是否有删除文件的方法?

请指导我解决这个问题。

不能删除c#中的文件-未授权访问异常

首先,你应该将你的流语句打包到using子句中,它将自动处理dispose动作(即使在异常的情况下)-它将节省你在调试来自未关闭流的奇怪问题时的大量时间

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

现在异常经常出现,因为你当前的进程没有访问文件的权限(不能删除文件)-解决它

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

你可以在Windows资源管理器中找到这个文件,检查它的属性,在安全选项卡下你会发现特定的权限。

例如,如果你的页面托管在IIS上,那么它被识别为应用程序池身份,即IIS_IUSRS或NETWORK SERVICE,这些方通常不受信任(或信任程度不足以删除file0

)

我想,这与特权有关。当用户尝试连接到您的网站时,IIS将连接分配给IUSER_ComputerName帐户,该帐户属于Guests组。此组具有安全限制。尝试提升IUSER_ComputerName的访问权限。