ASP.Net 多虚拟目录Web应用程序 实现Session共享
来源:互联网 发布:淘宝新店动态评分低 编辑:程序博客网 时间:2024/06/03 20:13
网站改版,用户采用东南大学统一身份认证系统,要实现多个asp.net应用程序间的Session共享。
查阅资料N多,多不可行,可能可行的(包括微软官方方法)都需要改动应用程序本身很多...麻烦!很不悦!
最终,找到一个解决方案...不过估计微软会不悦。
大致思路:
采用SqlServer方式存储Session,分析数据库表结构、原理、流程,大致可以得到SqlServer存储Session的方法:
表结构:
ASPStateTempApplications表存储应用程序Id及名称
ASPStateTempSessions表存储具体的Session值
不同的应用程序会在ASPStateTempApplications中注册不同的数据,从而在ASPStateTempSessions中有不同的Session,如果要实现Session共享,可以用欺骗SqlServer的方法:用某种方法使得不同的应用程序访问数据库时用相同的App!为了达到这个目的,分析[dbo].[TempGetAppID]这个存储过程,代码如下:
可以看到传入参数是AppName,通过AppName获取AppId,如果不存在则在ASPStateTempApplications表中插入该条记录,这里AppName参数在传入时是不同的应用程序不同的,当然我们可以在这里小改一下...注意第5行 SET @appName = LOWER(@appName) 我们可以毫不客气的改成 SET @appName = 'Everything you want ^_^'
好了(不知道这样做微软会不会很不悦...),大功告成,清理残留的Session,最好重启一下IIS,不用修改旧程序本身丝毫(配置web.config除外),实现了Session共享...以后凡是使用该数据库作为Session存储的都可以共享Session了...
其他的一些配置说明如下:
配置web.config节:
配置SQLServer:
修改[dbo].[TempGetAppID]:将@appName设为一个定值,修改保存。
清理Session,重启IIS,KO!
PS:这个方法其实很Bug 嘿嘿 再多研究下数据库的存储过程或者用某种方法定制appName的话,可能可以实现更多的功能...留待以后研究研究...
注意:如果多台服务器,可以考虑Memcached 取代Session
- ASP.Net 多虚拟目录Web应用程序 实现Session共享
- ASP.Net 多虚拟目录Web应用程序 实现Session共享
- asp.net 跨网站/应用程序池/虚拟目录/域名 的Session共享解决方案
- 不同的asp.net web应用程序间共享Session/Application
- asp与asp.net中多个虚拟目录session无法共享
- asp.net 不同应用程序在IIS发布后实现Session共享
- ASP.NET实现多域名多网站共享Session值
- ASP.NET实现多域名多网站共享Session值
- asp.net 用sqlserver 实现session共享
- asp.net 用sqlserver 实现session共享
- asp.net Session 共享
- Asp.net session共享
- ASP.NET+Web服务实现软件共享。
- ASP.NET+Web服务实现软件共享
- ASP.NET+Web服务实现软件共享
- Asp.net 多服务器 Session共享
- 如何实现Asp与Asp.Net共享Session
- 如何实现Asp与Asp.Net共享Session
- 用JS(JavaScript)来进行对Struts的Html:checkbox或者html:multibox进行全选、及其他控制
- Ext2.2中调用frame,无法打开 Internet 站点
- SQL Server 2000 触发器的使用实例
- Firefox中通过AJAX 得不到返回值
- linux 下安装 单机模式 hadoop
- ASP.Net 多虚拟目录Web应用程序 实现Session共享
- Ext 切换主题 并且 保存cookie
- 木马是如何启动的(一)
- 破解软件必备十大工具(含下载地址)
- sql 汉字排序规则(笔画、拼音)
- WindowsMobile6.5新特性介绍
- Linux中常用的网络命令
- Flex 3快速入门: 处理数据 定义数据模型
- WindowsMobile6.5的升级-Fans必看