我已经创建了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();
}
}
因此我可以使用“使用”(退出范围后立即释放资源)-仍然无法正常工作。
答案 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.
}