我使用的是使用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 »" />
</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");
}
答案 0 :(得分:1)
感谢Hans Kesting:
您似乎正在更新web.config文件。更新后,webapp会重新启动,这会导致所有会话丢失(即使是来自其他用户!)。