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

用户名

我创建了将文件发布到服务器的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(); 
    }
}

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

用户名

好的,问题在于,在“ 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.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章