File.Delete()不在运行模式下工作,但只能在调试模式下工作

时间:2012-04-09 03:21:33

标签: .net c#-4.0 file-io

我有一个奇怪的问题。 我将上传的文件保存到数据库,然后尝试删除上传的文件 来自上传文件夹。

这在调试模式下工作正常,但在运行模式下,文件仍未删除。

有人遇到过这个问题吗?

这是.NET 4

以下代码段:

private string SaveFiles(string rootFolder)
{
  var uploadedPhotos = GetAllFilesUploaded();
foreach (var file in uploadedFiles)
{
                string path= Path.Combine(rootFolder, "userfile", file.FileName);

                FileService.SaveUploadedFile(fileName, GetBytesFromLocalFile(path));

                File.Delete(path); <-- this only works in debug mode!!

                }
    }

    public static byte[] GetBytesFromLocalFile(string filePath)
            {
                using (FileStream fs = new FileStream(filePath, FileMode.Open))
                {
                    byte[] bytes = new byte[fs.Length];
                    fs.Read(bytes, 0, (int)fs.Length);
                    return bytes;
                }
            }

2 个答案:

答案 0 :(得分:2)

IMO因为它在调试模式下工作,所以这不是编码问题。问题在于为File.Delete(路径)提供的路径。自acc http://msdn.microsoft.com/en-us/library/system.io.file.delete.aspx

If the file to be deleted does not exist, no exception is thrown.

在发布模式下检查路径。可能与bin文件夹中的Release和Debug Folder有关。

答案 1 :(得分:2)

要添加到Nikhil的答案,我建议将MessageBoxpath置于发布模式,并手动检查路径是否正确。

注意:不要忘记删除之后的MessageBox