多个asp.net程序共用Session(sso程序的外设接口)
最近一段时间,又有客户要做sso单点登录。
我以前设计了专门用于点击登录的页面,web.config里面放置可修改的,验证中心的地址。这样如果很多客户都用同一种单点登录请求方式的时候,不同的客户仅仅修改web.config里面的验证中心的地址就可以了。
但是计划永远也赶不上变化。用户的需求永远是多样的,导致程序不能满足需求,这样就得不断的为每个客户不能得sso接口,来修改程序。
于是,我想如果现在的程序不变,单独写一个sso单点登录页面。可这样我遇到了一个问题,就是如果部署2个虚拟目录(或网站)的话,就遇到了session的跨web的情况了。
在网上看到下面这篇文章:
前 一段时间被同一个站点的不同Web项目通用Session的问题苦恼,搞得我很不爽,好多天都在想这个问题,在朋友的帮助下,找到了解决方法,网上也看了 一些相关文章。不过这些文章描述的并不够详细,我把这些相关知识整理一下,方便自己以后查找,也方便以后碰到这样问题的人,不要到处找资料,拼凑资料。
首先说明几点:
1、不同站点或虚拟目录是不能共享Session的
2、VS.NET默认创建的Web工程是一个工程一个虚拟目录
3、多个工程最好只能有一套的Web.config和Global.asax
由于以上的原因我们用手动创建多个工程的时候就不能共享Session,但使用VS.NET中的创建->其它项目->企业级模板项目就不会出现这样的问题了。
解决这个问题并不难,注意两点就行了:
1、多个工程最好只能有一套的Web.config和Global.asax
把 这些工程合并到一个虚拟目录下,至于Web.config和Global.asax,虽然一个工程可以配置一个,但是推荐还是整个web站点用一套配置, 而且不同目录下的Web.config影响不同的目录下aspx的配置,如果根目录下和一个WEB应用程序目录下都有Web.config文件,而且都定 义了,sessionState mode="InProc" 显然这两个应用的Session不可能共享了。
2、多个虚拟目录合并,或只用一个站点,就可以了。
具体做法是,在IIS设置里 打开子工程的目录 查看属性->目录->应用程序设置 中有个删除按钮,点那个删除就会把这个目录的虚拟目录去除,这样就OK了。
我遇到的问题就是没有注意到第二点。
我的做法是:
在 资源管理器中工程目录点右键->共享->Web共享->然后指定一个名称,然后就用VS.NET打开就可以打开了,但就是不能共享 Session。没有注意到IIS把里面的子工程也设为了虚拟目录。原来打开的时候VS.NET会把另一个工程也设置 为一个虚拟目录,所以Session就不能共享了。我唯一做的就是把那个虚拟目录删除就行了。就这么一个小问题搞的我好多天都没有睡好觉。希望大家不要学 我哟
这里我们把原来的程序称为A程序,新建的这个程序为B程序。
我新建了一个web工程,(由于测试所以未调用验证中心)。
其功能为:建立用户session,并跳转的 A程序的管理后台。
我把B程序里面的页面放到相应的A程序下。B程序生成的dll文件,放A程序的bin目录下。
(说白了,就是把B程序拷贝到A程序里面,但不替换原来的web.config、Global.asax等)
注意:这样处理后,B程序调用的web.config就和A程序调用的web.config是同样的一个了。大家在设计B程序的时候,一点要注意。
到iis里面我们测试一下吧,直接浏览B程序里面的页面,我们看到直接进入到A程序的后台管理了。跳过了A程序的登录页面。
成功。
转载于:https://www.cnblogs.com/delphinet/archive/2010/03/31/1701657.html
多个asp.net程序共用Session(sso程序的外设接口)相关推荐
- 【译文】漫谈ASP.NET中的Session
最近这两天被一个Web Farm环境下的Session处理问题虐得很痛苦,网上到处找解决方案,在无意中翻看到这篇文章,感觉很不错,顺手查了一下,貌似没有现成的译文,于是一咬牙一跺脚把这篇文章翻译出来了 ...
- 转:asp.net 负载平衡-Session相关
来自:http://www.cnblogs.com/zxylonely/archive/2009/12/23/1630197.html http://blog.csdn.net/lvlingwy/ar ...
- ASP.NET Core开源Web应用程序框架ABP
"作为面向服务架构(SOA)的一个变体,微服务是一种将应用程序分解成松散耦合服务的新型架构风格. 通过细粒度的服务和轻量级的协议,微服务提供了更多的模块化,使应用程序更容易理解,开发,测试, ...
- asp.net应用程序_如何在ASP.NET中为聊天应用程序构建键入指示器
asp.net应用程序 by Neo Ighodaro 由新Ighodaro 如何在ASP.NET中为聊天应用程序构建键入指示器 (How to build a typing indicator fo ...
- 在ASP.NET中使用Session常见问题集锦
以下内容来源于: http://blog.csdn.net/cuike519/archive/2005/09/27/490316.aspx 问:为什么Session在有些机器上偶尔会丢失? 答:可能和 ...
- 加速ASP.NET Core WEB API应用程序。 第三部分
深度重构和完善ASP.NET Core WEB API应用程序代码 (Deep refactoring and refinement of ASP.NET Core WEB API applicati ...
- JSP与ASP.Net之间的Session值共享
本篇介绍思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成JAVA的Session对象,在JAVA端转换 ...
- ASP.net 2.0下应用程序离线信息
ASP.net 2.0 有一个新特性,就是支持应用程序离线信息. 什么是离线信息呢?以前我们在更新应用程序,导至asp.net应用程序重启,应用程序的用户通常会显示不友好的错误信息,或者IE一直显示加 ...
- php微信小程序会话保持,微信小程序保持session会话的方法
一般我们web网站都会有cookie来保存session ID,将用户和服务器保持在一次会话中,但是很遗憾,微信小程序不支持cookie,他的每一次请求就是一次会话,这样就会产生一个问题,每次请求都需 ...
最新文章
- C++:rand()函数和srand()函数解读
- oracle数据库enq: TX - allocate ITL entry性能诊断
- ubuntu修改根用户密码
- qrcode——js生成二维码
- 弹性碰撞后速度方向_找准模型,快速求解碰撞类问题
- java的网络编程有用吗_十大有用但又偏执的Java编程技术
- 前端学习(3190):react简介二
- Vue项目部署,打包发布上线
- [C++]Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)
- webStorm 修改 JavaScript 版本为 ES6
- 【电路仿真】基于matlab Simulink光伏太阳能电池板仿真模型【含Matlab源码 771期】
- mac乱码 飞秋_ubuntu 下安装 dukto
- 2022-7 一套鼠标键盘控制两台及以上电脑
- hive整和mysql外表_hive中的外表EXTERNAL TABLE
- amoeba mysql读写分离_MySQL和Amoeba实现同步读写分离centos7
- 录屏 java_Java小程序—录屏小程序(上半场)
- *UVALive 6657 - GCD XOR(数学)
- 【HR面试100问】一篇文章根治各种HR面的套路问题,文章给出参考答案~持续更新
- ARM交叉编译工具链分类说明
- ASEMI线性稳压电源芯片AMS1117-3.3参数及接线电路图
热门文章
- stk 坐标系_STK中文用户手册.pdf
- kerberos认证_初识 Windows域认证体系 Kerberos认证
- 2021.02.03 Visual QA论文阅读
- php 调用变量方法名,php中引用(变量和函数名前加符号)用法
- detachedcriteria查询去重_2020考研初试成绩查询:安徽研究生考试成绩查询入口
- mysql 存储过程循环一张表的所有记录_MySQL数据库知识汇总
- python什么模块动态调用链接库_python如何调用扩展模块
- 20200915 椭圆范数的三角不等式证明:sqrt(x^T*Q*x)
- Git复习(二)之远程仓库、注册GitHub账号、SSH警告、使用GitHub
- sql-having