2011-05-03 46 views
2

我在IIS7上部署了两个Web应用程序。IIS生成相同的Session.SessionID

问题是,如果我使用相同的浏览器(不同的选项卡)请求两个应用程序,IIS会生成相同的Session.SessionID。

这是ASP.Net用户身份验证导致的一些问题,它是一些如何相互重叠和标志“User.Identity.IsAuthenticated”返回false每当用户登录到其他网站。只要用户在其中一个站点上工作,它就可以正常工作。

请帮助我,我似乎无法找到原因,我的意思是会话是特定于应用程序,所以为什么来自一个Web应用程序的sessionID与另一个冲突。

感谢

回答

3

它们在同一应用程序池运行。只需分开应用程序池。


问题是您的浏览器正在处理这些应用程序相同。 ASP.NET中的会话由会话cookie执行。这些需要有不同的网站名称,以便它们不共享相同的会话。


UPDATE

这是会话cookie是如何工作的。

但一种解决方案是将它们作为mysite.com/1mysite.com/2访问。我相信也应该起作用。

+0

当我更新时,您需要为他们设置不同的网站名称。使用不同的网站名称访问它们,例如'app1.mysite.com'和'app2.mysite.com' – Aliostad 2011-05-03 11:26:22

+0

网站名称与完全不同的域名一样?比如www.x.com和www.x.com/2不起作用? – Ali 2011-05-03 11:27:52

+0

不,它不会工作,虽然它可以在条件下。会话cookie是为网站设置的。你只需要用提琴检查cookies来看看有什么值。 – Aliostad 2011-05-03 11:28:59

0

您是否检查过应用程序池,如果要隔离Web应用程序,则应定义不同的应用程序池。

0

是否每个应用程序都在单独的IIS应用程序中运行?如果它们是,那么会话将是分开的,因为会话的范围是AppDomain。如果它们位于相同的IIS应用程序中,则它们将加载到相同的AppDomain中,并共享Session。

在相同的浏览器会话中(不管使用制表符),将发送相同的Session cookie。

+0

嗨我有一个问题,因为这两个网站都在相同的IIS应用程序下定义。是否有可能通过在web.config中指定不同的sessionName或指定不同的机器密钥来隔离这两个网站的会话? – desiguy 2014-08-12 15:03:34