动态更改会话状态提供程序
本文关键字:程序 会话状态 动态 | 更新日期: 2023-09-27 18:08:46
我们目前通过Web使用无cookie会话。配置
<sessionState cookieless="true" />
当你第一次点击一个网页时,它会重定向到它自己,并修改URL以包含会话id。
我的第一个问题是:对于某些页面是否有可能避免这种情况?如果页面名称= XXXXX,我正在尝试更改会话状态提供程序。我需要它只显示没有重定向的页面。
第二个问题是:是否有一种方法来切换会话提供程序从自定义到SQL在Global.asax。在某些情况下,我们需要使用SQL,而在其他情况下,我们需要自定义。
我已经尝试在全局中将SessionStateMode
更改为SQL
。asax在Session_Start,但没有运气。什么好主意吗?
关于我的第一个问题,我发现了一个页面指令,将做的伎俩
EnableSessionState="false"
我仍然需要弄清楚如何在Global.asax
中切换提供商扩展我们,目前正在使用无cookie会话,但我们正在切换到自定义提供者(状态服务器)。如果该服务器不可用,我们需要自动故障转移到SQL。
看来你的答案在这里
在全球。asax把
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
Configuration config;
config = WebConfigurationManager.OpenWebConfiguration("~");
SessionStateSection SessionState = config.GetSection("system.web/sessionState") as SessionStateSection;
if (SessionState != null)
{
SessionState.Mode = System.Web.SessionState.SessionStateMode.InProc;
//SessionState.Mode = (SessionStateSection)"Mode=InProc";
//(SessionStateSection)"Inproc";
config.Save();
}
}
http://www.totaltechnet.com/UpdateConfig/UpdateConfig.htm 编辑:我的错。看起来这里写的是新值web。config
全局事件Session_Start
发生在会话初始化之后。如果您需要在此之前进行更改,则必须挂钩较早的事件,如AcquireRequestState
。
这是来自Tech Days Hyderabad的一个关于使用HTTP模块定制会话状态的演讲。它建议使用SetSessionStateBehavior
,但它只允许您启用/禁用会话状态,而不允许切换提供商。
看起来你可以修改你的自定义提供程序来读取SQL状态。这里有一篇关于如何手动解码会话状态的文章。但这可能无法在。net版本中存活,