8049


ASP.NET MVC5でTempDataを使用し、  
リダイレクト先の画面にメッセージを表示させようとしていますが、  
何故か表示されません。

MyController # Register() 内の conf.Save();  
の部分をコメントアウトしたところ、メッセージが表示されるようになりました。

なぜ Web.config ファイルを編集し保存すると  
TempDataの中身がクリアされてしまうのか、  
理由をご存じの方がいらっしゃいましたら、ご教示ください。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

_MyController.cs_

[code]

    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");
        }
    }
    
[/code]

_Index.cshtml_

[code]

    @{
        ViewBag.Title = "Index";
        <div>@ViewBag.Message</div>
        @Html.ActionLink("登録画面へ", "Register")
    }
    
[/code]

_Register.cshtml_

[code]

    @{
        ViewBag.Title = "Register";
        using (Html.BeginForm())
        {
            <input type="submit" value="登録">
        }
    }
    
[/code]


CC BY-SA 3.0
2015-03-18T04:59:37.817
8045
2015-03-18T05:48:10.427
2015-03-18T05:18:32.530
8895
8895
question
c# visual-studio asp.net mvc
Web.configを編集・保存すると、TempDataが消えてしまいます。


[設定の変更によるアプリケーション ドメインの再起動](https://msdn.microsoft.com/ja-
jp/library/ackhksh7\(v=vs.100\).aspx)にもありますが、web.configファイルを編集することでASP.NETは再起動されます。


CC BY-SA 3.0
2015-03-18T05:48:10.427
8049
2015-03-18T05:48:10.427
4236
8045
answer