gpt4 book ai didi

c# - 上传后不能直接从服务器删除文件

转载 作者:太空宇宙 更新时间:2023-11-03 14:52:17 27 4
gpt4 key购买 nike

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

myControllerName.PostedFile.SaveAs(saveLocation);

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

[IOException: The process cannot access the file 'C:\RestOFMyFilePath' because it is being used by another process.]

所以我用过:

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

我试图在我的代码中的函数之前和之后放置这些行,以定位锁定资源的特定函数。如果我把它放在问题之前,它仍然会出现,当它在它修复之后。

缩小到

somefunctionName(FileUpload myControllerName)

尝试(主动)处置资源

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

但我仍然遇到该错误。

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

文件上传.cs:

public class FileUploadProxy : IDisposable
{
public FileUpload fileUploadController;

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

所以我可以使用“using”(在退出作用域后立即释放资源)——仍然没有用。

最佳答案

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

关于c# - 上传后不能直接从服务器删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com