Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进程无法访问该文件,该文件仍在使用中_C#_Asp.net Mvc - Fatal编程技术网

C# 进程无法访问该文件,该文件仍在使用中

C# 进程无法访问该文件,该文件仍在使用中,c#,asp.net-mvc,C#,Asp.net Mvc,关于stackoverflow本身,这个问题有很多答案。但我不明白到底发生了什么 我试图上传一个文件,其中的文件可能也在计数中 下面是我的代码创建问题部分- public ActionResult Upload(List<HttpPostedFileBase> file, CardModel card) { foreach (var item in file) { CardTable cardtable = new CardT

关于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;
public ActionResult上传(列表文件、卡片模型卡){
foreach(文件中的var项){
CardTable CardTable=新的CardTable();
if(item!=null&&item.ContentLength>0){
字符串扩展名=Path.GetExtension(item.FileName);
if(图像扩展(扩展)){
字符串路径=Server.MapPath(“~/CardPhotos/”);
item.SaveAs(路径+item.FileName);
字符串文件名=item.filename;
保存文件时,
item.SaveAs(path+item.FileName);
显示此错误“进程无法访问该文件,它正被另一进程使用。”


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

您可以在保存/创建文件后处理该文件,类似这样

item.SaveAs(path + item.FileName);
item.Dispose();
或者,您可以将保存放在using块中,如下所示

using(var i = new HttpPostedFileBase(item))
{
    i.Save(path + item.FileName);
}
我能想到的另一个原因是,新上传文件试图覆盖现有文件,而现有文件是在服务器上打开的