在更新值时丢失 Session 变量

Losing Session variable on updating values

我正在使用 asp .net 4 和 mvc 框架。 当我更新一个值时,我的会话丢失了。 我似乎无法弄清楚为什么。我是 ASP.

的新手

假设我有 Session["sValue"] (= "test")。 执行 Index() 后,该变量丢失

Note: It only happens if !string.IsNullOrEmpty(CallPrice) is True, so CallPrice has a value.

控制器:

// GET: Settings
[Route("Settings")]
public ActionResult Index()
{
    SettingsModel pageSettings = new SettingsModel();
    string CallPrice = Request.QueryString[pageSettings.Query_CallPrice];
    ViewBag.Result = "";

    try
    {
        if (!string.IsNullOrEmpty(CallPrice))
        {
            pageSettings.Price = Convert.ToInt32(CallPrice);
            SettingsManager.call_price = CallPrice;
            ViewBag.Result = "Update Succesful.";
        }
    }
    catch (FormatException)
    {
        if (!string.IsNullOrEmpty(CallPrice))
            pageSettings.Price = Convert.ToInt32(SettingsManager.call_price);

        ViewBag.Result = "Error Occured (Incorrect format provided)";
    }

    return View(pageSettings);
}

页面:

@model Actacom3CX.Models.SettingsModel
@{
    ViewBag.Title = "3CX Settings";
}
<head>
    @{
        if (HttpContext.Current.Session[Actacom3CX.Classes.Statics.SESSION_USERNAME] == null)
        {
            Response.Redirect("~/UserLogon", false);
        }else
        {
            HttpContext.Current.Session[Actacom3CX.Classes.Statics.SESSION_USERNAME] = HttpContext.Current.Session[Actacom3CX.Classes.Statics.SESSION_USERNAME];
        }
    }
</head>
<div class="jumbotron" style="margin-top: 0em; padding-bottom:0.4em;padding-top:0.5em;">
    <div align="center">
        <h2 style="margin:0em;padding:0em;">
            @ViewBag.Title
        </h2>

        <h3 align="center">
            @{
                Output.Write(ViewBag.Result);
            }
        </h3>

    </div>
</div>



<div class="row">
    <form id="settingsForm" method="get" action="~/Settings">
        <input class="btn btn-default" type="text" name=@{Output.Write(Model.Query_CallPrice);} value=@{Output.Write(Model.Price);} /><b style="padding-left: 1em;">Cent per minuut</b>
        <br /><br />
        <input class="btn btn-default" type="submit" value="Update &raquo;" />
    </form>
</div>

UPDATE

会话丢失发生在 SettingsManager 中的以下代码中:

public static void SetSetting(string key, string value)
{
    Configuration configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
    configuration.AppSettings.Settings[key].Value = value;
    configuration.Save();
    ConfigurationManager.RefreshSection("appSettings");
}

感谢 Hans Kesting:

您似乎正在更新 web.config 文件。更新后,webapp 重新启动,这会导致所有会话丢失(甚至来自其他用户!)。