我在VS.NET中建了两个Project(同一个solution),这两个project在IIS中分别对应于两个虚拟目录,在这两个项目中如何共享Session?最好不要使

时间:2021-05-03 11:00:33
我在VS.NET中建了两个Project(同一个solution),这两个project在IIS中分别对应于两个虚拟目录,在这两个项目中如何共享Session?
最好不要使用合并项目的方法和存在数据库中的方法。

10 个解决方案

#1


不能共享。

#2


肯定不能共享

#3


不同的应用程序间session是独立的,不能共享。
试试看用cookie保存吧。。

#4


在IIS中将这两个虚拟目录里的Application删除,使其成为单纯的虚拟目录。
同时调整两个目录下的web.config 文件的内容,将一些必须放在应用程序目录下的内容取出来生成一个新的web.config,放在wwwroot目录下。

另一种方法:适合于两个应用程充间需要共享SESSION的地方不多的情况下。在需要获得对方的SESSION时,通过WEBREQUEST访问某个指定的页面,该页面返回SESSION值,接收后保存在本地应用程序的SESSION中。

#5


非常感谢拟的回答 ,spring_ok(spring.z)
如果在IIS中将这两个虚拟目录里的Application删除,那么就不能运行了,会报错呀
拟说的第一种方法我还不明白,能不能详细点,我很着急,非常感谢

#6


楼上,为什么要这样做呢?没有可能不用这样做可以解决的方法呢?

#7


报错应该是设置方面的错误。
你把两个目录里的Bin子目录也合并,搬到wwwroot目录下。
把两个目录里的web.config, global.asax也合并,也搬到wwwroot目录下。
这样应该就可以了。

#8


没有办法的。我们项目中也遇到了这个问题,现在181个project,通信成了第一大难题。对于一些全局的变量,我们通常是放到session里面。但是不同的VirtualDirectory下的application却没法互相通信。所以,我们对于这些全局性的东西,作了一个class,分作两种情况:开发模式和测试(运行)模式。在开发模式下,变量取一些固定的数值;在测试模式下,即:所有的应用都集成在了一个目录下,这时候取得就是数据库里面的值。
至于如何区分在开发模式还是测试模式,我是放在了web.config中。
详细的情况,可以和我联系:juqiang@genersoft.com

呵呵,这个问题困扰了我4个多月,现在项目组一直这么运作的,程序不需要改,开发和测试都可以保证正常运行。

#9


感谢您使用微软产品。

这个问题可能是小组开发的时候经常考虑的问题。把项目分割为多个project, 方便了设计和调试。但是我们无法共享Session/Application变量。

关于这个问题,建议您参阅下面的方法:

注意:下文中假设您在使用VS.NET做Web开发。

1。 打开IIS管理台,将您的两个项目删除。假设为Module1和Module2.

2。 在VS.NET中,生成一个ASP.NET Web Application. 假设为Master.

3。 打开“我的电脑”,将Module1和Module2目录拷贝到Master下面。

4。 打开Master\Module1目录,打开Module1.csproj.webinfo文件, 修改下面的字段:

<Web URLPath=http://localhost/Master...>

注意,添加了Master字段。

5。 在Module2下,重复步骤4。

6. 打开Module1下面的Web.config,除了<appSettings> section, 删除其余部分。 如果您认为有保留的必要,请转移至Master目录下的Web.config.

7。在Module2下,重复步骤6。

8。 在Module1下,删除Global.asax* files。

9。 在Module2下,重复步骤8。

10. Rebuild Module1和Module2, 确保输出的Assembly保存在Master目录下的Bin中。

11。在VS.NET中,打开Master项目,然后add project, 把Module1和Module2加进来。显然,您可以在他们之间共享Session.

同时,您还可以分小组,分别对Module1和Moduel2进行开发。

希望上面的信息对您有所帮助。

-微软全球技术中心  -zgh
 
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。

#10


如果Module1和Module2是用不同的目录建立的,比如一个是C#,另外一个是VB,能像你说的那样整合吗?多谢!

#1


不能共享。

#2


肯定不能共享

#3


不同的应用程序间session是独立的,不能共享。
试试看用cookie保存吧。。

#4


在IIS中将这两个虚拟目录里的Application删除,使其成为单纯的虚拟目录。
同时调整两个目录下的web.config 文件的内容,将一些必须放在应用程序目录下的内容取出来生成一个新的web.config,放在wwwroot目录下。

另一种方法:适合于两个应用程充间需要共享SESSION的地方不多的情况下。在需要获得对方的SESSION时,通过WEBREQUEST访问某个指定的页面,该页面返回SESSION值,接收后保存在本地应用程序的SESSION中。

#5


非常感谢拟的回答 ,spring_ok(spring.z)
如果在IIS中将这两个虚拟目录里的Application删除,那么就不能运行了,会报错呀
拟说的第一种方法我还不明白,能不能详细点,我很着急,非常感谢

#6


楼上,为什么要这样做呢?没有可能不用这样做可以解决的方法呢?

#7


报错应该是设置方面的错误。
你把两个目录里的Bin子目录也合并,搬到wwwroot目录下。
把两个目录里的web.config, global.asax也合并,也搬到wwwroot目录下。
这样应该就可以了。

#8


没有办法的。我们项目中也遇到了这个问题,现在181个project,通信成了第一大难题。对于一些全局的变量,我们通常是放到session里面。但是不同的VirtualDirectory下的application却没法互相通信。所以,我们对于这些全局性的东西,作了一个class,分作两种情况:开发模式和测试(运行)模式。在开发模式下,变量取一些固定的数值;在测试模式下,即:所有的应用都集成在了一个目录下,这时候取得就是数据库里面的值。
至于如何区分在开发模式还是测试模式,我是放在了web.config中。
详细的情况,可以和我联系:juqiang@genersoft.com

呵呵,这个问题困扰了我4个多月,现在项目组一直这么运作的,程序不需要改,开发和测试都可以保证正常运行。

#9


感谢您使用微软产品。

这个问题可能是小组开发的时候经常考虑的问题。把项目分割为多个project, 方便了设计和调试。但是我们无法共享Session/Application变量。

关于这个问题,建议您参阅下面的方法:

注意:下文中假设您在使用VS.NET做Web开发。

1。 打开IIS管理台,将您的两个项目删除。假设为Module1和Module2.

2。 在VS.NET中,生成一个ASP.NET Web Application. 假设为Master.

3。 打开“我的电脑”,将Module1和Module2目录拷贝到Master下面。

4。 打开Master\Module1目录,打开Module1.csproj.webinfo文件, 修改下面的字段:

<Web URLPath=http://localhost/Master...>

注意,添加了Master字段。

5。 在Module2下,重复步骤4。

6. 打开Module1下面的Web.config,除了<appSettings> section, 删除其余部分。 如果您认为有保留的必要,请转移至Master目录下的Web.config.

7。在Module2下,重复步骤6。

8。 在Module1下,删除Global.asax* files。

9。 在Module2下,重复步骤8。

10. Rebuild Module1和Module2, 确保输出的Assembly保存在Master目录下的Bin中。

11。在VS.NET中,打开Master项目,然后add project, 把Module1和Module2加进来。显然,您可以在他们之间共享Session.

同时,您还可以分小组,分别对Module1和Moduel2进行开发。

希望上面的信息对您有所帮助。

-微软全球技术中心  -zgh
 
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。

#10


如果Module1和Module2是用不同的目录建立的,比如一个是C#,另外一个是VB,能像你说的那样整合吗?多谢!