在更新值时丢失 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 »" />
</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 重新启动,这会导致所有会话丢失(甚至来自其他用户!)。
我正在使用 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 »" />
</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 重新启动,这会导致所有会话丢失(甚至来自其他用户!)。