会话过期问题
问题描述:
我创建MVC应用程序的MVC应用程序。在我有web.config.i.e会话过期问题
try
{
//// Helps to open the Root level web.config file.
Configuration webConfigApp = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
AppSettingsSection objAppsettings = (AppSettingsSection)webConfigApp.GetSection("appSettings");
//Edit
if (objAppsettings != null)
{
////Modifying the AppKey from AppValue to AppValue1
objAppsettings.Settings["DaysToKeepJob"].Value = model.Keepjobsfolders.ToString();
objAppsettings.Settings["DeleteLocalStoreStudies"].Value = model.DeleteLocalStoreStudies.ToString();
objAppsettings.Settings["ManualBurnerNoOfCopies"].Value = model.ManualNumberofCopies.ToString();
objAppsettings.Settings["DefaultBurner"].Value = model.DefaultBurner.ToString();
objAppsettings.Settings["AutoBurnerNoOfCopies"].Value = model.AutoNumberofCopies.ToString();
objAppsettings.Settings["SmartDisk"].Value = model.chkSMARTDisk.ToString();
objAppsettings.Settings["ForcetodefaultTransfer"].Value = model.chkKeepjobsfolders.ToString();
////Save the Modified settings of AppSettings.
webConfigApp.Save();
}
if (diskType.Title != null)
{
var res = DiskTypeSave(diskType);
}
return Json(new { Status = "Success", Msg = "Rules Saved Successfully." }, JsonRequestBehavior.AllowGet);
}
用于更新写代码,但该行webConfigApp.Save后();我的会话,即会话[“UserAccessRights”]变为空。我知道,因为更新web.config它得到空。
请提出来维护会话甚至web.config文件更新
答
每次更改web.config
时,都会在IIS中重新启动应用程序。
你可以做以下的事情之一:
- 使用其他的设置文件,XML,JSON等来存储这些值
- 使用数据库来存储每个用户的这些设置
- 使用SQL服务器保存会话或状态服务器,而不是内存(默认)
答
对于这一点,你首先要保持会话复制到本地变量,然后再次分配。但为此,您还必须保留Session.SessionId副本,因为在新会话中它会再次设置。
请勿修改您的web.config文件。将配置存储在别处:单独的JSON或XML文件,数据库或键/值对存储。 – mason