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="登録">
    }
}