更新值

时间:2015-06-22 11:31:21

标签: c# asp.net asp.net-mvc session-variables

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

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

  

注意:仅当!string.IsNullOrEmpty(CallPrice)为True时才会发生,因此CallPrice有值。

控制器:

// 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);
}

Page:

@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>
  

更新

会话丢失发生在以下一段代码中,在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");
}

1 个答案:

答案 0 :(得分:1)

感谢Hans Kesting:

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