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

前一段时间被同一个站点的不同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就不能共享了。我唯一做的就是把那个虚拟目录删除就行了。就这么一个小问题搞的我好多天都没有睡好觉。希望大家不要学我哟

posted on 2007-06-19 18:07  sdav  阅读(2177)  评论(1编辑  收藏  举报

导航