使用正在设置的Cookie遇到一个奇怪的问题。在大多数情况下,一切都按预期工作,但有时我得到错误
System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
at System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength)
at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
at System.Convert.FromBase64String(String s)
at System.IdentityModel.Services.ChunkedCookieHandler.ReadInternal(String name, HttpCookieCollection requestCookies)
at System.IdentityModel.Services.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken)
at System.IdentityModel.Services.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
我可以一遍又一遍地执行相同的步骤,此错误将随机显示。也许在5日去,然后第10次去下一次。
当我在浏览器中查看cookie时,我可以看到发生错误时结束标记的最后几个字符是重复的。 Cookies如下(重要位),
FedAuth={base64string}
FedAuth1={base64string}cml0eUNvbnRleHRUb2tlbj4=
FedAuth2=b2tlbj4=
注意FedAuth1如何完成FedAuth2的角色。由于某种原因,不必要地创建了这个FedAuth2 cookie并导致字符串以
结束</SecurityContextToken>oken>
(base64解密)。
我不知所措......
答案 0 :(得分:0)
我仍然不确定为什么会这样,但我设法通过重命名我的一些角色来解决问题,因此Cookie永远不会超过2个FedAuth cookie。问题似乎在于创建了第三个cookie。