Windows Identity Foundation System.Xml.XmlException: неожиданный конец файла

У нас есть собственная 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

Я не знаю, повлияет ли это на конечного пользователя или какие проблемы это может вызвать. Было бы здорово, если бы кто-нибудь мог пролить свет на это исключение и что я мог бы сделать, чтобы предотвратить его в будущем.


person Jeff    schedule 27.09.2011    source источник


Ответы (1)


Когда вы используете Wif, Wif преобразует информацию о пользователе в файл cookie Fed, чтобы пользователю не приходилось снова и снова проходить аутентификацию. Этот файл cookie Fed, файл 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

person Atacan    schedule 28.09.2011
comment
Это именно то, что оказалось. На определенных страницах, где у нас была аналитика Google, токен защиты от подделки и т. д., размер файла cookie домена превышал ограничение в 4096 байт, установленное некоторыми браузерами (safari, Opera и т. д.). Реализация кэша маркеров безопасности устранила проблему. - person Jeff; 14.03.2012