ファイルを保存し、App_Data ディレクトリにディレクトリを作成できる小さな asp.net MVC 1 Web アプリがあります。書き込み操作が成功したら、tempdata にメッセージを追加し、redirectToRoute を実行します。問題は、アクションの実行時に tempdata が null であることです。Web アプリケーションのルート ディレクトリ以外のディレクトリにファイルを書き込むと、tempdata は null ではなく、すべてが正しく機能します。app_data に書き込むと tempdata がクリアされるように見える理由はありますか?
編集: DRS.Logic.Repository.Manager.CreateFile(path, hpf, comment) が App_Data に書き込む場合、TempData はリダイレクト先のアクションで null になります。Web アプリのルート外のディレクトリであれば問題ありません。例外はスローされていません。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(int id, string path, FormCollection form)
{
ViewData["path"] = path;
ViewData["id"] = id;
HttpPostedFileBase hpf;
string comment = form["FileComment"];
hpf = Request.Files["File"] as HttpPostedFileBase;
if (hpf.ContentLength != 0)
{
DRS.Logic.Repository.Manager.CreateFile(path, hpf, comment);
TempData["notification"] = "file was created";
return RedirectToRoute(new { controller = "File", action ="ViewDetails", id = id, path = path + Path.GetFileName(hpf.FileName) });
}
else
{
TempData["notification"] = "No file were selected.";
return View();
}
}