进程无法访问该文件,它仍然被使用错误

时间:2014-03-10 16:43:15

标签: c# asp.net-mvc

关于stackoverflow本身的这个问题有很多答案。但我不明白实际发生了什么。

我尝试上传文件,其中文件也可能在计数中。

以下是我创建问题的代码 -

 public ActionResult Upload(List<HttpPostedFileBase> file, CardModel card) {
            foreach (var item in file) {
                CardTable cardtable = new CardTable();
               if (item != null && item.ContentLength > 0) {
                    string extension = Path.GetExtension(item.FileName);
                    if (ImageExtension(extension)) {
                        string path = Server.MapPath("~/CardPhotos/");
                        item.SaveAs(path + item.FileName);
                        string filename = item.FileName;

保存文件item.SaveAs(path+item.FileName);时显示此错误“进程无法访问该文件,正由另一个进程使用。

另一种解决方案是关于使用Sleep,但首先我想了解这个异常并想知道什么是明显的解决方案。

1 个答案:

答案 0 :(得分:2)

您可以在保存/创建后处理文件,如下所示。

item.SaveAs(path + item.FileName);
item.Dispose();

或者,您可以将保存放在使用块中,类似于下面的内容。

using(var i = new HttpPostedFileBase(item))
{
    i.Save(path + item.FileName);
}

我能想到的另一个原因是,新的上传文件试图覆盖现有文件,并且现有文件已在服务器上打开。