1

お願い助けて。asp.net mvc 3 アプリケーションがあります。サーバーからファイルを削除する必要がありますが、できません。ローカル マシンでアプリケーションをテストすると、削除は成功しますが、Web サーバーで実行すると System.IO.IOException: The process cannot access the file '' エラーが発生します。別のプロセスで使用されているためです。

[HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
     ...
     if (ad.AdPhoto1 != null)
        {
            System.IO.File.Delete(AppDomain.CurrentDomain.BaseDirectory + "Content/photos/" + ad.AdPhoto1);
        }
    }
4

1 に答える 1

0

あまり完全な質問でなくてすみません。昨日はあまり時間がありませんでした... ファイルは画像 (.jpg など) です。私はモデルを持っています:

public class Ad
{
    public int AdId { get; set; }
    ...
    [Display(Name = "Photo")]
    public string AdPhoto1 { get; set; }
    [Display(Name = "Photo 2")]
    public string AdPhoto2 { get; set; }
    [Display(Name = "Photo 3")]
    public string AdPhoto3 { get; set; }
    [Display(Name = "Photo 4")]
    public string AdPhoto4 { get; set; }
    ...
}

新しい「広告」を作成するとき、サーバーに写真をアップロードし、その名前をモデルに書き込みます。これを行う方法:

[HttpPost]
public ActionResult Create(Ad ad, int? Categories, int? SubCategories, IEnumerable<HttpPostedFileBase> fotoUpload)
{
    ...
    if (ModelState.IsValid)
        {
            int count = 1;
            foreach (var file in fotoUpload)
            {
                Random random = new Random();
                int randomItem = random.Next(1, 100);

                if (file != null)
                {
                    string path = AppDomain.CurrentDomain.BaseDirectory + "Content/photos/";
                    string filename = randomItem + count + "Photo" + Path.GetFileName(file.FileName);

                    if (Request.ContentLength > 1228800) 
                    {
                        ViewBag.FileSizeError = "Сумарный размер загружаемых вами файлов превышает ограничение в 1,2 МБ";
                        ModelState.Remove("Categories");
                        ValuteInitializer();
                        return View();
                    }

                    file.SaveAs(Path.Combine(path, filename));

                    switch (count)
                    {
                        case 1:
                            ad.AdPhoto1 = filename;
                            break;
                        case 2:
                            ad.AdPhoto2 = filename;
                            break;
                        case 3:
                            ad.AdPhoto3 = filename;
                            break;
                        case 4:
                            ad.AdPhoto4 = filename;
                            break;
                    }

                }

                count++;
            }
            if (User.Identity.IsAuthenticated)
            {
                ad.AdAuthor = User.Identity.Name;
                ad.AdVisibility = true;
                db.SaveChanges();
            }
            ad.AdData = DateTime.Now;
            ad.AdPriority = 3;
            ad.CategoryId = Categories;
            ad.SubCategoryId = SubCategories;
            db.Ads.Add(ad);
            db.SaveChanges();
            return RedirectToAction("CreateSuccess");
        }

        return View(ad);
    }         

同じ問題に関する多くの投稿を見ていますが、問題の解決策が見つかりません。問題はストリームに関連している可能性があると思います。だから、誰かが私を助けてくれることを願っています...

于 2012-12-27T06:28:50.370 に答える