4

在同一台服务器上设置了两个应用程序,GamesPlayLogin 和 GamesPlay。[Windows 服务器 2008 R2]

因此,一旦使用登录应用程序 (GamesPlayLogin) 对用户进行身份验证,

<authentication mode="Forms">
  <forms name="GamesLoginCheck" loginUrl="/GamesPlayLogin/Default.aspx"  
         timeout="240" path="/" slidingExpiration="true" />
</authentication>

它们被重定向到应用程序:GamesPlay。但是在进行重定向时,每次身份验证都会失败,并且用户会被重定向回第一个应用程序:GamesPlayLogin。

根据需求决策,这两个应用程序设置为在不同的应用程序池中运行,可能是为了避免其中一个应用程序发生影响另一个应用程序的问题。我们正在使用自动生成的密钥。

此外,我们通过检查 IIS(版本 7.5)确保未选中“为每个应用程序生成唯一密钥”框。

事件日志显示::

Event message: Forms authentication failed for the request
Reason: The ticket supplied was invalid

我看到了许多与上述事件日志相关的解决方案,但没有成功。首先,我的应用程序位于相同的 WEB SERVER 上,并且使用自动生成的密钥的相同设置在早期工作(Windows server 2008,直到我们最近迁移到 windows server 2008 R2)。

我仍在寻找为什么相同的设置更早工作(Windows server 2008)但在最近迁移到 Windows 2008 R2 之后没有工作的原因。

4

1 回答 1

2

IIS 7 和 7.5 之间存在差异,即应用程序池的默认标识从网络服务更改为自动生成的 AppPool 标识。

此外,这两个应用程序池在不同的用户下运行。

因为,autogenkey 是基于每个用户存储的,并且两个进程在不同的用户下运行,它们将具有不同的 autogen 密钥,这最终解释了为什么我们在这里看到问题。

浏览DEV'S Blog,终于证明很有帮助。

最后,考虑到我们的要求,我们将应用程序池的身份更改为每个应用程序池的相同用户。

此外, Kev的这篇博客文章描述了 autogenkey 如何存储在注册表中。

于 2013-09-07T07:36:55.260 回答