上传文件后无法直接从服务器删除文件

时间:2018-07-10 07:18:58

标签: c# asp.net

我已经创建了fileUpload Controller,该文件将文件发布到服务器。

myControllerName.PostedFile.SaveAs(saveLocation);

如果我试图在上传完成后立即从服务器删除文件,它将返回一个异常:

  

[IOException:该进程无法访问文件'C:\ RestOFMyFilePath',因为它正在被另一个进程使用。]

所以我用过:

GC.Collect(); 
GC.WaitForPendingFinalizers();

我试图将这些行放在代码中的函数之前和之后,以查找锁定资源的特定函数。如果我将其放在问题之前,它仍然会发生,并且在修复后会在什么时候出现。

将其缩小到

somefunctionName(FileUpload myControllerName)

试图通过以下方式(主动)处置资源:

iconUploadController.PostedFile.InputStream.Dispose();
iconUploadController.Dispose();

我仍然遇到该错误。

我尝试过的另一种解决方案是为fileUpload创建代理类

FileUpload.cs:

public class FileUploadProxy : IDisposable
{
    public FileUpload fileUploadController;

    public void Dispose()
    {
        fileUploadController.Dispose(); 
    }
}

因此我可以使用“使用”(退出范围后立即释放资源)-仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

好吧,问题在于在“ somefunctionName(FileUpload myControllerName)”内部,我再次调用了我错过的同一文件:

System.Drawing.Image objImage = System.Drawing.Image.FromFile(filePathOnDisk)

解决方案:

using (System.Drawing.Image objImage = System.Drawing.Image.FromFile(filePathOnDisk))
{
      //Operation on the objImage.
}