团队开发中,如何处理一个站点不同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

[推荐] VC 入门的一条路 -- 史列因

史列因(iamsor@sohu.com)首先声明,我可不是什么高手,也就是刚脱贫。因为运气很好,买到了几本好书,在学习过程中几乎没走什么弯路,没费什么劲就入门了,现在一般的小程序能搞定了。看到那些因为...
  • bruce
  • bruce
  • 2002-10-08 13:36:00
  • 1030

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

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

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

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

分布式web应用session机制研究

session机制对于初学者来讲是有些难于理解的,在此探讨一下session的机理。希望对读者能够提供帮助。    由于http协议是一种无状态的协议。即协议本身并没有规定建立连接的客户端和服务器端之...
  • hmilym1050636281
  • hmilym1050636281
  • 2014-03-22 08:59:49
  • 1017

如何解决不同的webApp的session 共享问题

复制严格说来不算持久化保存,因为session实际上还是保存在内存里,不过同样的信息被复制到各个cluster内的服务器进程中,这样即使某个服务器进程停止工作也仍然可以从其他进程中取得session。...
  • jjkliu
  • jjkliu
  • 2014-02-10 09:50:00
  • 3375

asp.net不同应用程序Session共享

  • 2017年10月10日 22:11
  • 27.5MB
  • 下载

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

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

团队开发中通用Session

 团队开发中,如何处理一个站点不同Web应用通用Session前一段时间被同一个站点的不同Web项目通用Session的问题苦恼,在CSDN网友的帮助下,找到了解决方法,网上也找到了一些相关文章。不过...
  • llp1217
  • llp1217
  • 2004-08-04 13:55:00
  • 1227

Asp.net中处理一个站点不同Web应用共享Session的问题

  • zgqtxwd
  • zgqtxwd
  • 2008-04-24 07:42:00
  • 110

不同服务器的session访问

前段日子碰到一个问题。起了一个应用服务器,两个web服务器,由于保存信息是,一半的信息在web服务器1上,另一半的信息在web服务器2上,web服务器1上调用了web服务器2上的页面,现在有web服务...
  • danielinbiti
  • danielinbiti
  • 2008-04-22 19:57:00
  • 1172
收藏助手
不良信息举报
您举报文章:团队开发中,如何处理一个站点不同Web应用通用Session
举报原因:
原因补充:

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