我们在Web场中运行经过身份验证的WCF服务,间歇性地抛出此错误:
MessageSecurityException:SecurityContextSecurityToken包含无效的Cookie。处理Cookie时发生以下错误:'解码SecurityContextSecurityToken的Cookie元素时出错。'。 ---> CryptographicException:DataProtectionSecurityStateEncoder无法解码字节数组。确保' UserProfile'加载,如果这是一个网络场方案'确保所有服务器都作为具有漫游配置文件的同一用户运行,或者提供自定义的SecurityStateEncoder'。 ---> CryptographicException:密钥无法在指定状态下使用。
我花了很多时间深入研究上述内容,我相信我理解错误......但是我无法找到有关如何配置DataProtectionSecurityStateEncoder的任何信息。
我想将编码器配置为使用local computer settings(我们同步的机器键等),但我完全卡住了。有人能指出我正确的方向吗?
答案 0 :(得分:0)
使用可能的解决方案进行更新,我相信我们可以通过以下方式解决此问题:
protected void Application_BeginRequest(object sender, EventArgs e)
{
OperationContext.Current.Host.Credentials.SecureConversationAuthentication.SecurityStateEncoder = new DataProtectionSecurityStateEncoder(false);
}
我们仍然在测试这个问题,但是这个问题已经停止,同时我们解决了一些已经出现的高优先级问题。
请注意此处,以防其他人遇到类似问题,并且无法找到解决方案(以及与我们一样,有一个在域外运行的Web场)。
当我们回到工作岗位时,我会回来并更新这个答案。