应用场景:应用服务器是集群方式,用户前后两次请求可能访问的不是一台服务器。因此已经不能像以前一样使用状态(Application、Session、Cache、ViewState等),使用Redis作为缓存服务
1. nuget下载 RedisSessionProvider
2. StackExchange.Redis 1.0.320
3. web.config
<system.web>
<sessionState mode="Custom" customProvider="RedisSessionProvider">
<providers>
<add name="RedisSessionProvider" type="RedisSessionProvider.RedisSessionStateStoreProvider, RedisSessionProvider"/>
</providers>
</sessionState>
</system.web>
4. Global.asax
void Application_Start(object sender, EventArgs e)
{
StackExchange.Redis.ConfigurationOptions redisConfigOpts = StackExchange.Redis.ConfigurationOptions.Parse("192.168.8.138:6379");
RedisSessionProvider.Config.RedisConnectionConfig.GetSERedisServerConfig = (HttpContextBase context) =>
{
return new KeyValuePair<string, StackExchange.Redis.ConfigurationOptions>(
"DefaultConnection",
redisConfigOpts);
};
}
安装Redis
修改Redis.windows.conf,如果不修改,远程不能访问Redis
将bind 127.0.0.1 改成了bind 0.0.0.0。注意:进入生产环境时候,要启用密码,否则会是Redis漏洞
启动Redis
测试(iis发布+程序调试,确保使用同一个浏览器,sessionid才会相同)
redis数据库中存储的session(key为sessionid)