团队开发中,如何处理一个站点不同Web应用通用Session

原创 2004年03月10日 18:20:00

团队开发中,如何处理一个站点不同Web应用通用Session

前一段时间被同一个站点的不同Web项目通用Session的问题苦恼,在CSDN网友的帮助下,找到了解决方法,网上也找到了一些相关文章。不过这些文章描述的并不够详细,我把这些相关知识整理一下,方便自己以后查找,也方便以后碰到这样问题的人,不要到处找资料,拼凑资料。

同一个站点,不同虚拟目录下的Web应用程序不能共享Session。而VS.net 默认创建的 Web 工程是一个工程一个虚拟目录,一个工程使用一套自己的Web.config和Global.asax文件,这样我们在开发一个站点的多个关联项目(通过Session共享资源)的时候,就会遇到麻烦。

解决这个问题并不难,把这些工程合并到一个虚拟目录下,至于Web.config和Global.asax,虽然一个工程可以配置一个,但是推荐还是整个web站点用一套配置,而且不同目录下的Web.config影响不同的目录下aspx的配置,如果根目录下和一个WEB应用程序目录下都有Web.config文件,而且都定义了,sessionState mode="InProc" 显然这两个应用的Session不可能共享了。

具体来说,满足以下条件,可以实现同一站点Session共享。

1、需要共享Session的站点去处虚拟目录设置,如下图:

(图一,删除应用程序的虚拟目录,注意是点击删除按钮,不是卸载按钮,把自己的应用程序目录文件删除了我可不负责)

2、保证整个站点有个Web应用程序必备的东西,比如Web.config和Global.asax。 这里的设置是要对整个站点负责的。简单的方法可以在站点的根目录创建一个Web应用。

3、删除各个需要通用Session站点目录下Web.config和Global.asax文件中影响该应用程序的设置,比如下面框中是罗里的Web.config中应该删除的。

 

满足以上条件就可以通用Session了。

下面针对对于团队开发中,使用vs.net开发站点不同项目通用Session写一个简单演示:

前提条件:

有两个Web 应用 WriteSession ,ReadSession 在同一个站点。我们要演示的是 WriteSession Web应用中写一个Session值,比如Session["aaa"] = "123";  然后在ReadSession中读取出这个Session值。

上述两个工程就相当于大型Web开发中的分配给两个人的开发工程。可以这样认为,WriteSession 是处理用户登录,登录后登录信息记录到Session 然后其他Web工程 比如罗列用户信息在另外一个Web工程ReadSession

1、把两个Web工程包含在同一个解决方案中,比如:WebTest;(这个不用我图片演示了把,新建一个空白解决方案,然后把存在的两个Web工程加入这个解决方案)

2、新建一个Web工程,这个工程是整个站点的Web工程,不用包含这个站点下的几个Web工程,如果从解决方案浏览器下看如下图:

CSDN_Dev_Image_2003-5-211542452.gif

(图2 虽然 ReadSession WriterSession 下的aspx文件也属于ghj1976.csdn.net这个Web工程的一部分,但是它的工程下并没有罗列,这样实现了一个站点多个项目的功能,在稍后的配置中可以看到,ReadSession WriterSession 都被解除了虚拟目录。)

3、按照图一提供的方法,去除ReadSession 和 WriterSession 的虚拟目录配置。

4、ReadSession 和 WriteSession 两个Web工程的Web.Config文件中删除一些设置,删除那些看上面提到的框。(为了减少麻烦,最简单的方法是直接删除Web.Config和Global.asax 两个文件。这样以后程序启动就调用它上级的这两个配置文件,也就是ghj1976.csdn.net这个web应用的这两个文件)

5、在ghj1976.csdn.net web工程中增加对 ReadSession WriteSession 两个Web工程的引用,注意:是工程引用,不是其他引用 看下图

(图3 这三个Web工程是在同一个解决方案里面,这样才可以实现 工程引用)

图2也可以看到把这两个工程引用到ghj1976.csdn.net工程了。

6、生成解决方案,运行程序就看可看到,一切ok了。

如果要发布这个程序,执行文件只需要copy 根目录下bin目录下的文件就可以了。

其他要注意事项:

新建一个解决方案,这个解决方案只包含其中一个Web工程比如:ReadSession ,修改代码,生成解决方案,你会发现执行咋会不是自己修改后的呢。哈哈,当然不会一样了,这个工程已经不是虚拟目录了,他调用的执行文件是根目录下bin目录的文件,而不是这个解决方案目录下bin目录下的。

团队开发中,WriteSession 可以看作每个人都要调用的公共工程,ReadSession 可以认为是每个人自己负责的工程,这样就可以实现团队开发中的多个工程共享一个Session了。

如何团队开发网上这方面的文章很多,这里就不重复了。

相关资料连结:

CSDN 讨论这个问题的帖子在:

http://expert.csdn.net/Expert/topic/1773/1773115.xml

307467 HOW TO: Create an ASP.NET Application from Multiple Projects for Team

http://support.microsoft.com/?id=307467

 How to Share Session/Application State Across Different ASP.NET Web Applications

http://www.asp101.com/articles/jayram/sharestate/default.asp

 317786 HOW TO: Manage Multi-Project Solutions in Visual Studio .NET

http://support.microsoft.com/?id=317786

 

多个Web项目通用Session的问题--转

多个Web项目通用Session的问题--转 前一段时间被同一个站点的不同Web项目通用Session的问题苦恼,搞得我很不爽,好多天都在想这个问题,在朋友的帮助下,找到了解决方法,网上也看...
  • wxw_317
  • wxw_317
  • 2014年11月06日 12:15
  • 1476

IIS多个应用程序共享Session

在应用程序目录下面添加一个Global.asax文件,在文件中添加以下代码: public override void Init() { base.Init(); ...
  • apollokk
  • apollokk
  • 2015年11月24日 17:10
  • 1879

IIS应用程序池多工作进程设置及Session共享

在调优iis的时候,朋友分享给我一个特别棒的设置方法步骤,感谢好朋友的分享。 IIS应用程序池多工作进程设置及Session共享 1 概述 微软的IIS作为Windows平台下Asp.N...
  • lu_yongchao
  • lu_yongchao
  • 2013年06月06日 16:27
  • 6933

全局变量显示网站的总访问人数以及当前访问人数(Application 和Session的应用)

Global.asax文件的应用 使用到全局变量显示网站的总访问人数以及当前访问人数数据库:create database MyHost        use Myhost create table ...
  • GXZheng1985
  • GXZheng1985
  • 2007年06月09日 11:21
  • 1196

团队开发中,如何处理一个站点不同Web应用通用Session

团队开发中,如何处理一个站点不同Web应用通用Session前一段时间被同一个站点的不同Web项目通用Session的问题苦恼,在CSDN网友的帮助下,找到了解决方法,网上也找到了一些相关文章。不过这...
  • carper
  • carper
  • 2004年03月10日 18:20
  • 3263

跨服务器Session共享的四种方法

摘自:http://www.code163.com/web/20100423363.html 网站业务规模和访问量的逐步发展,原本由单台服务器、单个域名的迷你网站架构已经无法满足发展需要。 ...
  • caomiao2006
  • caomiao2006
  • 2016年05月01日 17:21
  • 2344

如何处理一个站点不同Web应用通用Session

团队开发中,如何处理一个站点不同Web应用通用Session 前一段时间被同一个站点的不同Web项目通用Session的问题苦恼,在CSDN网友的帮助下,找到了解决方法,网上也找到了一些相关文章。不过...
  • bgu
  • bgu
  • 2004年10月19日 14:41
  • 631

团队开发中,如何处理一个站点不同Web应用通用Session (转载)

专栏作品 团队开发中,如何处理一个站点不同Web应用通用Session郭红俊 前一段时间被同一个站点的不同Web项目通用Session的问题苦恼,在CSDN网友的帮助下,找到了解决方法,网上也找到了一...
  • qunluo
  • qunluo
  • 2004年07月22日 18:36
  • 1339

分布式Session的几种实现方式

一。分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的...
  • u014352080
  • u014352080
  • 2016年06月26日 20:38
  • 20448

android客户端与服务器端交互 如何保持session

最近在开发项目的过程中,遇到android与web服务器要在同一session下通信的问题。 在解决问题前先回顾下Session与Cookie: Cookie和Session都为了...
  • zxc123e
  • zxc123e
  • 2014年12月03日 15:21
  • 40267
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:团队开发中,如何处理一个站点不同Web应用通用Session
举报原因:
原因补充:

(最多只允许输入30个字)