【问题标题】:Delete file from folder throws error从文件夹中删除文件会引发错误
【发布时间】:2014-09-12 13:23:43
【问题描述】:

我有一个文件夹 G:\Images 允许我通过 c# 从上传页面插入图像,当我从文件夹中删除图像时出现问题,出现以下错误。

System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.File.InternalDelete(String path, Boolean checkHost)

如果用户想要更新他们的个人资料图片,他们上传图片,然后我检查数据库中的旧图片,然后使用下面的代码从文件夹中删除它,然后再添加新的图片 ID。

但是如果我上传新图片然后在错误发生后再次上传图片。

我的代码是

if (System.IO.File.Exists(@"G:\\Images\\" + string.Format("{0}.png", OldProfileImage)))
{
    try
    {
        System.IO.File.Delete(@"G:\\Images\\" + string.Format("{0}.png", OldProfileImage));
    }
    catch(Exception e)
    {
        logger.Error(string.Format("Delete file error Exception is {0} {1}", e.Source.ToString(), e.StackTrace.ToString()));
    }
}

------------------------根据要求更改了 e.tostring()----------------

错误是:System.UnauthorizedAccessException:访问路径 'G:\Images\5bb188f0-2508-4cbd-b83d-9a5fe5914a1b.png' 被拒绝。在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.File.InternalDelete(String path, Boolean checkHost)

但如上所述,我可以插入、删除,但如果我再插入,则在发生错误后直接删除。

【问题讨论】:

  • 登录 e.ToString() 让 .net 告诉你出了什么问题
  • 或者更好的是:不要捕获任何异常!
  • 如果您必须使用它来查看错误,请尝试记录 e.Message 和 e.StackTrace。
  • @George,您的问题需要清理一下,您的语言结构非常混乱。这句话毫无意义:“我可以添加一个文件然后删除它,但是当我尝试在错误发生后立即添加另一个文件时,但我不知道如何关闭它。”。编辑您的问题,以便更准确地描述正在发生的事情。
  • 如果您正在创建文件,您是否正确清理了用于创建它的任何内容(例如关闭/处置)?如果文件仍处于打开状态以进行写入,则似乎可能会导致一些问题。

标签: c#


【解决方案1】:

我遇到了类似的问题。 我的是一个控制台应用程序。 在我的本地机器上,它运行良好,但是当我放入服务器时,它在System.IO.File.Delete(file);上给了我这个错误@

澄清一下,我的帐户有删除权限。我可以手动删除文件。

后来我使用“以管理员身份运行”选项运行程序,它解决了这个问题。

【讨论】:

    【解决方案2】:

    试试这个:

        string file = @"G:\\Images\\" + string.Format("{0}.png", OldProfileImage);
        System.IO.File.SetAttributes(file, FileAttributes.Normal);
        System.IO.File.Delete(file);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多