我在带有 IIS 7.5 的 Windows Server 2008 上托管我的 Web 应用程序,我有 2 个 Web 应用程序: 1. 第一个是带有登录页面的核心 sso(单点登录)服务。2. 另一个 Web 应用程序托管在使用第一个应用程序进行 sso 的同一 Web 服务器上。
我正在使用 WIF RTM 来实现 sso,
通常,它运行良好,没有任何问题,用户可以登录并抛出 sso 并重定向回起始页面。但是当我登录时先抛出 sso,然后重新启动 IIS,如果我回到第二个应用程序并刷新页面,则会出现以下错误:
“/”应用程序中的服务器错误。密钥在指定状态下无效。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Security.Cryptography.CryptographicException:密钥在指定状态下无效。
源错误:在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[CryptographicException:密钥在指定状态下无效。]
System.Security.Cryptography.ProtectedData.Unprotect(Byte[] encryptedData, Byte[] optionalEntropy, DataProtectionScope 范围) +425
Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(Byte[] 编码) +59[InvalidOperationException:ID1073:尝试使用 ProtectedData API 解密 cookie 时发生 CryptographicException(有关详细信息,请参阅内部异常)。如果您使用的是 IIS 7.5,这可能是由于应用程序池上的 loadUserProfile 设置设置为 false。] Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(Byte[] 编码) +151
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte[] cookie, Boolean outbound) +109
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader , SecurityTokenResolver tokenResolver) +634
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) +105
Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie) +239
Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) +59
Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) +52
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75________________________________________ 版本信息:Microsoft .NET Framework 版本:2.0.50727.4927;ASP.NET 版本:2.0.50727.4927
用户会话是使用 SQLServer 会话模式存储的,我为此使用了一个特殊的数据库。
我已经尝试了很多,我无法在我的本地计算机(Windows7)上重新处理这个问题。有没有人有类似的经历?你能告诉我如何解决这个问题吗?