Asp.net 共享ASP表单身份验证在同一域上失败

Asp.net 共享ASP表单身份验证在同一域上失败,asp.net,forms-authentication,Asp.net,Forms Authentication,我有一个ASP 4.0 web表单应用程序和一个ASP MVC 4.5应用程序,我需要在它们之间共享表单身份验证。然而,虽然我已经使用fiddler确认在对第二个应用程序的请求中设置了auth cookie,但它仍然重定向到登录页面 如前所述,我在每个应用程序中使用了相同的机器密钥。我还创建了新的项目来测试这一点,但它们确实有效。问题出在.NET 4.5中,有加密增强功能,这意味着尽管我为每个应用指定了相同的机器密钥,但它们的解密方式不同。新的ASP 4.5项目使用httpRuntime元素(见

我有一个ASP 4.0 web表单应用程序和一个ASP MVC 4.5应用程序,我需要在它们之间共享表单身份验证。然而,虽然我已经使用fiddler确认在对第二个应用程序的请求中设置了auth cookie,但它仍然重定向到登录页面


如前所述,我在每个应用程序中使用了相同的机器密钥。我还创建了新的项目来测试这一点,但它们确实有效。

问题出在.NET 4.5中,有加密增强功能,这意味着尽管我为每个应用指定了相同的机器密钥,但它们的解密方式不同。新的ASP 4.5项目使用httpRuntime元素(见下文)将targetFramework设置为4.5,而第二个项目使用.NET 4.0,因为它没有设置targetFramework

<httpRuntime targetFramework="4.5" />

因此,我可以在第二个项目中以.NET 4.5为目标,或者,为了避免升级过程中出现任何错误,我可以指定第二个项目,在继续使用.NET 4.0的同时,对机器密钥使用.NET 4.5中的加密增强功能

<machineKey compatibilityMode="Framework45" />


花了将近一天的时间思考这个问题,完全忘记了在不同的地方使用的.NET框架。希望这能为其他人节省时间。作为另一个选项,您可以将ASP.NET 4.5应用程序设置为使用compatibilityMode=“Framework20SP2”的旧加密方法。