Windows Identity Foundation System.Xml.XmlException:意外的文件结尾

时间:2011-09-27 20:24:58

标签: c# asp.net asp.net-mvc wif

我们的网站上都有一个自定义STS,都在Windows Azure中运行。 STS是ASP.NET 4.0,站点是MVC3。在过去的几天里,我开始看到我们的诊断日志中出现了以下异常中的一小部分:

System.Xml.XmlException: Unexpected end of file.
   at System.Xml.EncodingStreamWrapper.ProcessBuffer(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding)
   at System.Xml.XmlUTF8TextReader.SetInput(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
   at System.Xml.XmlDictionaryReader.CreateTextReader(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
   at System.Xml.XmlDictionaryReader.CreateTextReader(Byte[] buffer, Int32 offset, Int32 count, XmlDictionaryReaderQuotas quotas)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.GetKeyId(Byte[] sessionCookie)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie)
   at Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken)
   at Microsoft.IdentityModel.Web.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

我不知道最终用户是否有任何影响或可能导致的问题。如果有人可以对这个例外有所了解以及我将来可以采取哪些措施来防止这种情况,我会很高兴。

1 个答案:

答案 0 :(得分:7)

当您使用Wif时,Wif会将用户信息转换为Fed cookie,以便用户无需一次又一次地进行身份验证。这个Fed cookie,会话cookie,用于会话认证模块解释的每个请求,该模块为HttpContext和Thread设置用户。

由于用户信息可能很大,通常这个cookie会被分成小块。

在您的情况下,正在发生的事情是SAM无法读取cookie中表示的数据。

您看到的错误可能是浏览器限制提交的Cookie数量/大小的最终结果。

对用户的影响是身份验证失败或500,具体取决于处理此错误的方式,我没有调查过。

我建议您尝试查看您网站提供的Cookie数量。我在一些帖子中看到Opera和Safari可能会遇到这些问题:

http://social.msdn.microsoft.com/Forums/eu/Geneva/thread/dc1e178f-46ab-4567-88b8-1f2541744908