Web.configを編集・保存すると、TempDataが消えてしまいます。
ASP.NET MVC5でTempDataを使用し、
リダイレクト先の画面にメッセージを表示させようとしていますが、
何故か表示されません。
MyController # Register() 内の conf.Save();
の部分をコメントアウトしたところ、メッセージが表示されるようになりました。
なぜ Web.config ファイルを編集し保存すると
TempDataの中身がクリアされてしまうのか、
理由をご存じの方がいらっしゃいましたら、ご教示ください。
==========================================
MyController.cs
public class MyController : Controller
{
public ActionResult Index()
{
if (TempData["Message"] != null)
{
string message = TempData["Message"].ToString();
ViewBag.Message = message;
}
return View();
}
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(string hogeModel)
{
var conf = WebConfigurationManager.OpenWebConfiguration("~");
foreach (var key in conf.AppSettings.Settings.AllKeys)
{
// 何らか編集(とりあえず全部同じ値で更新)
conf.AppSettings.Settings[key].Value = conf.AppSettings.Settings[key].Value;
}
conf.Save(); // ここをコメントアウトするとうまくいく
TempData["Message"] = "変更を保存しました。";
return RedirectToAction("Index");
}
}
Index.cshtml
@{
ViewBag.Title = "Index";
<div>@ViewBag.Message</div>
@Html.ActionLink("登録画面へ", "Register")
}
Register.cshtml
@{
ViewBag.Title = "Register";
using (Html.BeginForm())
{
<input type="submit" value="登録">
}
}