最近一段时间,又有客户要做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程序的外设接口)相关推荐

  1. 【译文】漫谈ASP.NET中的Session

    最近这两天被一个Web Farm环境下的Session处理问题虐得很痛苦,网上到处找解决方案,在无意中翻看到这篇文章,感觉很不错,顺手查了一下,貌似没有现成的译文,于是一咬牙一跺脚把这篇文章翻译出来了 ...

  2. 转:asp.net 负载平衡-Session相关

    来自:http://www.cnblogs.com/zxylonely/archive/2009/12/23/1630197.html http://blog.csdn.net/lvlingwy/ar ...

  3. ASP.NET Core开源Web应用程序框架ABP

    "作为面向服务架构(SOA)的一个变体,微服务是一种将应用程序分解成松散耦合服务的新型架构风格. 通过细粒度的服务和轻量级的协议,微服务提供了更多的模块化,使应用程序更容易理解,开发,测试, ...

  4. asp.net应用程序_如何在ASP.NET中为聊天应用程序构建键入指示器

    asp.net应用程序 by Neo Ighodaro 由新Ighodaro 如何在ASP.NET中为聊天应用程序构建键入指示器 (How to build a typing indicator fo ...

  5. 在ASP.NET中使用Session常见问题集锦

    以下内容来源于: http://blog.csdn.net/cuike519/archive/2005/09/27/490316.aspx 问:为什么Session在有些机器上偶尔会丢失? 答:可能和 ...

  6. 加速ASP.NET Core WEB API应用程序。 第三部分

    深度重构和完善ASP.NET Core WEB API应用程序代码 (Deep refactoring and refinement of ASP.NET Core WEB API applicati ...

  7. JSP与ASP.Net之间的Session值共享

    本篇介绍思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成JAVA的Session对象,在JAVA端转换 ...

  8. ASP.net 2.0下应用程序离线信息

    ASP.net 2.0 有一个新特性,就是支持应用程序离线信息. 什么是离线信息呢?以前我们在更新应用程序,导至asp.net应用程序重启,应用程序的用户通常会显示不友好的错误信息,或者IE一直显示加 ...

  9. php微信小程序会话保持,微信小程序保持session会话的方法

    一般我们web网站都会有cookie来保存session ID,将用户和服务器保持在一次会话中,但是很遗憾,微信小程序不支持cookie,他的每一次请求就是一次会话,这样就会产生一个问题,每次请求都需 ...

最新文章

  1. C++:rand()函数和srand()函数解读
  2. oracle数据库enq: TX - allocate ITL entry性能诊断
  3. ubuntu修改根用户密码
  4. qrcode——js生成二维码
  5. 弹性碰撞后速度方向_找准模型,快速求解碰撞类问题
  6. java的网络编程有用吗_十大有用但又偏执的Java编程技术
  7. 前端学习(3190):react简介二
  8. Vue项目部署,打包发布上线
  9. [C++]Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)
  10. webStorm 修改 JavaScript 版本为 ES6
  11. 【电路仿真】基于matlab Simulink光伏太阳能电池板仿真模型【含Matlab源码 771期】
  12. mac乱码 飞秋_ubuntu 下安装 dukto
  13. 2022-7 一套鼠标键盘控制两台及以上电脑
  14. hive整和mysql外表_hive中的外表EXTERNAL TABLE
  15. amoeba mysql读写分离_MySQL和Amoeba实现同步读写分离centos7
  16. 录屏 java_Java小程序—录屏小程序(上半场)
  17. *UVALive 6657 - GCD XOR(数学)
  18. 【HR面试100问】一篇文章根治各种HR面的套路问题,文章给出参考答案~持续更新
  19. ARM交叉编译工具链分类说明
  20. ASEMI线性稳压电源芯片AMS1117-3.3参数及接线电路图

热门文章

  1. stk 坐标系_STK中文用户手册.pdf
  2. kerberos认证_初识 Windows域认证体系 Kerberos认证
  3. 2021.02.03 Visual QA论文阅读
  4. php 调用变量方法名,php中引用(变量和函数名前加符号)用法
  5. detachedcriteria查询去重_2020考研初试成绩查询:安徽研究生考试成绩查询入口
  6. mysql 存储过程循环一张表的所有记录_MySQL数据库知识汇总
  7. python什么模块动态调用链接库_python如何调用扩展模块
  8. 20200915 椭圆范数的三角不等式证明:sqrt(x^T*Q*x)
  9. Git复习(二)之远程仓库、注册GitHub账号、SSH警告、使用GitHub
  10. sql-having