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