Проблема воспроизводится на 100%:
Действительно, после повторного развертывания приложения И старый файл cookie аутентификации остается на клиентском компьютере (клиент не вышел) - эта ошибка появляется на клиенте прилюбой следующий запрос.Чтобы исправить эту ошибку, клиент должен удалить куки и / или войти, а затем выйти из STS.Как только все сделано - ошибка исчезает и все в порядке до следующего обновления ....
После некоторого исследования, я думаю, что это ошибка в модуле SessionAuthenticationModule, которую необходимо исправить.Если вы внимательно посмотрите на приведенную выше трассировку стека, есть интересный метод под названием TryReadSessionTokenFromCookie, который устанавливает ожидание того, что модуль аутентификации будет «пытаться» прочитать токен из cookie, и вернет false, если это не получится, - вот код (благодаряResharper!):
public bool TryReadSessionTokenFromCookie(out SessionSecurityToken sessionToken)
{
byte[] sessionCookie = this.CookieHandler.Read();
if (sessionCookie == null)
{
sessionToken = null;
return false;
}
sessionToken = this.ReadSessionTokenFromCookie(sessionCookie);
if (DiagnosticUtil.TraceUtil.ShouldTrace(TraceEventType.Verbose))
{
DiagnosticUtil.TraceUtil.Trace(TraceEventType.Verbose, TraceCode.Diagnostics, SR.GetString("TraceValidateToken", new object[0]), new TokenTraceRecord(sessionToken), null);
}
return true;
}
Очевидно, что в этом методе происходит сбой кода с необработанной ошибкой, и у разработчика не остается никакой возможности обработать ошибку более или менее разумным способом.(... Или, по крайней мере, я не смог найти ни одного, поскольку этот модуль HTTP не передает эту ошибку объекту HttpApplication для обработки и выбрасывает ее в лицо пользователя.) Итак, я думаю, что есть две ошибки: 1) Маркер безопасностиобработчик должен быть более конкретным в отношении причины выброса ID1073 (ошибка расшифровки на стороне сервера или неправильная (старая) ошибка cookie) 2) Должен быть способ для разработчика обработать эту ошибку и выйти из системы пользователя, если это происходит,Я приму ЛЮБУЮ помощь по этому вопросу ... Может ли кто-нибудь, ПОЖАЛУЙСТА, создать пример кода, показывающий, как перехватить это исключение, чтобы пользователь мог автоматически выйти из системы при возникновении этой ошибки?Опять же, событие Application.Error, похоже, не запускается из этого модуля - не уверен, что еще можно сделать для его обработки, кроме написания моего собственного SessionAuthenticationModule.ЛЮБАЯ ПОМОЩЬ ВЫСОКО ЦЕНИТСЯ!!!Спасибо!Alex