我创建了将文件发布到服务器的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] 删除。
我来说两句