关于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
,但首先我想了解这个异常并想知道什么是明显的解决方案。
答案 0 :(得分:2)
您可以在保存/创建后处理文件,如下所示。
item.SaveAs(path + item.FileName);
item.Dispose();
或者,您可以将保存放在使用块中,类似于下面的内容。
using(var i = new HttpPostedFileBase(item))
{
i.Save(path + item.FileName);
}
我能想到的另一个原因是,新的上传文件试图覆盖现有文件,并且现有文件已在服务器上打开。