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

原创 2004年07月28日 13:40:00

前一段时间被同一个站点的不同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工程,如果从解决方案浏览器下看如下图:

(图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开发中解决一个浏览器登录多个用户的方案

以前项目中遇到过这样的情况,一个用户当时是这样解决的。
  • u013614451
  • u013614451
  • 2014年06月04日 14:11
  • 3869

大型网站Session管理

随着网站的功能和用户越来越多,单机器服务部署的Web应用已经不能再支持了。这时候就需要优化或调整目前的架构,具体怎么优化,或先优化哪部分,这取决于网站的具体情况, 并非总是一个套路。 具...
  • yanli1979
  • yanli1979
  • 2016年08月01日 11:43
  • 1342

如何使用github来开发和管理一个团队的项目

用github来管理项目代码
  • Leptune
  • Leptune
  • 2014年11月24日 15:33
  • 1895

同一Tomcat下不同Web应用之间共享Session会话

实现同一Tomcat下两个WEB应用之间通过session 共享数据。 查看tomcat 关于 HTTP Connector 中有个emptySessionPath 其解释如下: If s...
  • huangchunwju
  • huangchunwju
  • 2015年04月14日 17:04
  • 2050

同一个tomcat多个web应用共享session

tomcat版本:apache-tomcat-6.0.29(次方tomcat6和tomcat7支持)   1.修改D:\apache-tomcat-6.0.29\conf\server.xml文件...
  • QQCrazyBoy
  • QQCrazyBoy
  • 2014年07月25日 10:38
  • 912

解决同一IP不同端口或跨域访问站点iframe应用session丢失的问与及ASP.NET 开发相关超时设置

解决办法一: Iframe  Session 丢失 跨域: http://support.microsoft.com/kb/323752 解决办法二 在网站群的建设中,各子站需要共享主站的foo...
  • hyhyct
  • hyhyct
  • 2012年02月27日 22:10
  • 3444

vs.net下的web团队开发源代码的管理new( 图解)

  • 2008年09月26日 10:43
  • 3.45MB
  • 下载

vs.net下的web团队开发源代码的管理vss

  • 2009年01月14日 11:37
  • 620KB
  • 下载

团队开发用svn做版本控制(附web开发中dreamweaver与svn的搭配)

这是我目前掌握的一点点svn入门使用攻略,写下来备用。 第一,搭建svn服务端 一个团队搭建一个服务端即可,如果你不需要搭建的话请看后面客户端部分,这里直接跳过即可。 1,下载服务端和客...
  • u012749355
  • u012749355
  • 2014年08月08日 09:59
  • 381

团队开发共用一个开发者账号

由于自己只开通了一个苹果开发者账号,又想在自己的macbook和公司的mac mini上都能在真机上调试。所以上网查了资料,查到的都是旧的方法,需要从钥匙串管理那里把私钥导出来然后从XCode里面把p...
  • ternenceWei
  • ternenceWei
  • 2015年10月13日 15:57
  • 1069
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:团队开发中,如何处理一个站点不同Web应用通用Session
举报原因:
原因补充:

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