2013-03-26 53 views
0

我有一些IIS网站运行在一个IIS服务器上,当然使用不同的端口。这些网站允许通过表单认证登录。会话状态存储在本地状态服务器上。我的问题是,当用户登录到一个站点然后导航到另一个站点时,他们会从第二个站点获得例外,并且必须关闭/重新打开其Web浏览器才能访问它。我的猜测是,来自第一个网站的cookie让它看起来像是在第二个网站上登录的(尽管我可能对此完全错误)。ASP.NET网站无意中共享登录cookie

我试了一些东西来解决它(这可能是愚蠢的,并与问题无关,但我远离ASP.NET专家)包括: 1)给站点不同的cookie Web.config的sessionState标记中的名称,以及 2)将网站移至不同的应用程序池,但问题仍然存在。任何帮助,将不胜感激。

回答

2

我建议为每个站点设置不同的域。如果这是本地的,请使用主机文件将local.site1.com和local.site2.com路由到正确的位置。显然你必须保持这个端口。那么你应该为每个网站设置一个不同的域名,而不会造成混淆。

+0

这是一个好主意,但它的问题在这里,因为我们没有任何其他的服务器有多个域,而我们的基础架构团队正在犹豫有这个服务器是唯一一个(因为如果在下班时间发生了一些事情,帮助台员工可能不了解配置)。这是我们Intranet上的内部服务器,我们使用WINS,因此* .server不会自动解析到服务器。 – 2013-03-26 17:43:43

+1

在这种情况下,您似乎需要编写一个httpmodule来检查Cookie,以获取一些自定义数据,这些自定义数据将从请求中依赖删除/失效cookie,然后将相应的数据写回响应中。例如,可能在每个应用程序的每个应用程序中将应用程序名称写入用户数据,然后在每个应用程序中检查对该数据的请求,并对表单auth cookie采取适当的操作。这是一个糟糕的解决方案,但不知道还有什么要做。 – 2013-03-26 19:46:20