Я хотел добавить некоторую информацию, чтобы помочь понять проблему. Проверка подлинности с помощью форм позволяет хранить пользовательские данные либо в файле cookie, либо в строке запроса URL-адреса. Метод, поддерживаемый вашим сайтом, можно настроить в файле web.config.
По словам Microsoft :
Метод SignOut удаляет информацию о билете для проверки подлинности форм из файла cookie или URL-адреса. если CookiesSupported имеет значение false .
В то же время они говорят :
Одно из значений HttpCookieMode, которое указывает, настроено ли приложение для аутентификации форм без файлов cookie.
умолчанию используется UseDeviceProfile .
Наконец, что касается UseDeviceProfile, они говорят :
Если для свойства CookieMode установлено значение UseDeviceProfile,
свойство CookiesSupported вернет значение true, если в браузере для
текущего запроса поддерживает как файлы cookie, так и перенаправление с файлами cookie ; в противном случае свойство CookiesSupported вернет false.
Соединяя все это вместе, в зависимости от браузера пользователя, конфигурация по умолчанию может привести к тому, что CookiesSupported будет true , что означает, что метод SignOut не удаляет билет из куки. Это кажется нелогичным, и я не знаю, почему это работает так - я бы ожидал, что SignOut действительно выписывает пользователя при любых обстоятельствах.
Один из способов заставить SignOut работать самостоятельно - изменить режим файлов cookie на «UseCookies» (т. Е. Файлы cookie требуются) в файле web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/SignIn" cookieless="UseCookies"/>
</authentication>
Согласно моим тестам, выполнение этого заставляет SignOut работать само по себе за счет вашего сайта, требующего, чтобы файлы cookie функционировали должным образом.