Asp.Net如何将Session存入Mysql
1、web.config里面自定义session存储模式,配置如下:
主要是mode属性和数据库连接字符串的配置
<sessionState mode="Custom" customProvider="CustomSessionStoreProvider" timeout="20">
<providers>
<add name="CustomSessionStoreProvider"
type="SessionStore.MySqlSessionStoreProvider, SessionStore"
applicationName="MyAPP"
connectionString="Server=localhost;User Id=xxx;Password=xxx;Database=xxx;charset=utf8;"
/>
</providers>
</sessionState>
2、开发实现SessionStore.dll,要求:
1、自动创建sessions表
2、根据sessionid动态分配用户,模拟负载均衡
3、数据库连接字符串支持加密,多个连接串按‘|’分隔
4、appname根据不同项目可自动生成,也可以统一配置
5、定时清理过期的sessioin数据
3、具体实现请参考msdn官网案例,点这里https://msdn.microsoft.com/en-us/library/ms178589(v=vs.140).aspx
4、填坑:并发导致死锁问题
(这里和官网不一致)仅针对可读写的请求才+1,客户端多个并发的请求(异步)(可读+可读写)偶尔会出现死锁的情况;
if (lockRecord) { lockId = (int)lockId + 1;