我在IIS7上部署了两个Web应用程序。
问题是,如果我使用相同的浏览器(不同的选项卡)请求两个应用程序,IIS正在生成相同的Session.SessionID。
这会导致ASP.Net用户身份验证出现问题,每次用户登录到其他站点时,它们之间的重叠程度如何,并且“User.Identity.IsAuthenticated”标志会返回false。只要用户在其中一个站点上工作,它就可以正常工作。
请帮帮我,我似乎无法找到原因,我的意思是会话是特定于应用程序的,所以为什么来自一个Web应用程序的sessionID与另一个是冲突的。
谢谢
答案 0 :(得分:3)
它们在同一个应用程序池中运行。只需分开应用程序池。
问题是您的浏览器正在对这些应用程序进行相同处理。 ASP.NET中的会话由会话cookie 实现。这些需要不同的网站名称,以便它们不共享同一会话。
这是会话cookie的工作方式。
但有一种解决方案是以 mysite.com/1
和mysite.com/2
的形式访问它们。我相信也应该有用。
答案 1 :(得分:0)
您是否检查了应用程序池,如果要隔离Web应用程序,则应定义不同的应用程序池。
答案 2 :(得分:0)
每个应用程序是否在单独的IIS应用程序中运行?如果是,那么会话将是独立的,因为Session的范围限定为AppDomain。如果它们位于同一IIS应用程序中,则它们将加载到同一AppDomain中,并将共享Session。
在同一个浏览器会话中(无论使用标签),都会发送相同的会话cookie。