我有一个具有这样结构的 ASP.NET 系统,在同一台服务器上托管 .Net 1.1 和 .Net 2.0 应用程序:
/apps11/app1
/apps11/app2
/apps11/web.config
/apps20/app3
/apps20/app4
/apps20/web.config
上面这两个 web.config 文件具有特定于其 .Net 版本的部分,但与表单身份验证和机器密钥相关的部分是相同的(因此表单身份验证 cookie 可以在不同版本的应用程序之间共享)。该部分如下所示(混淆了真实密钥,但保留了确切的长度和设置):
<machineKey
validationKey="AAAABBBBCCCCDDDDEEEEFFFF0000111122223333"
decryptionKey="BBBB9999AAAA1111"
validation="SHA1">
</machineKey>
<authentication mode="Forms">
<forms name=".ASPXAUTH" protection="All" timeout="15" path="/" loginUrl="/apps20/login.aspx"></forms>
</authentication>
应用登录页面组件升级后,1.1 应用的共享身份验证停止工作。我可以登录到 2.0 应用程序,但是当我导航到 1.1 应用程序时,它会不断地将我重定向回登录页面。经历了以下故障排除步骤:
- MS10-070 存在问题并需要KB243375 补丁?它已经在服务器上应用了。
- 安装程序破坏了机器密钥?我检查了 machinekey 值,安装程序更新了 validationKey 和 encryptionKey 值。但是,设置保持不变(validation="SHA1"),并且两个 web.config 文件中的机器密钥相同。
- machine.config 或 web.config 中每个 .Net Framework 版本的其他值?在 .Net 2.0 web.config 中找到了域设置,但这似乎只影响票证 cookie 的域,而不影响它的内容。
- 如如何在 ASP.NET V1.1 和 ASP.NET V2.0 应用程序之间共享身份验证 Cookie中所述,1.1 和 2.0 之间的加密设置存在问题?除了键值之外什么都没有改变,为什么它现在会坏掉呢?