問題を理解するのに役立つ情報を追加したかったのです。フォーム認証では、Cookie または URL のクエリ文字列にユーザー データを格納できます。サイトがサポートする方法は、web.config ファイルで構成できます。
マイクロソフトによると:
SignOut メソッドは、CookiesSupported が false の場合、Cookie または URL からフォーム認証チケット情報を削除します。
同時に、彼らは言う:
アプリケーションが Cookie を使用しないフォーム認証用に構成されているかどうかを示す HttpCookieMode 値の 1 つ。デフォルトは UseDeviceProfileです
。
最後に、UseDeviceProfile に関しては、次のように述べています。
CookieMode プロパティが UseDeviceProfile に設定されている
場合、現在のリクエストのブラウザが
Cookie と Cookie によるリダイレクトの両方をサポートしている場合、CookiesSupported プロパティは true を返します。それ以外の場合、CookiesSupported プロパティは false を返します。
これをすべて組み合わせると、ユーザーのブラウザーによっては、既定の構成で CookiesSupported がtrueになる場合があります。これは、SignOut メソッドが Cookie からチケットをクリアしないことを意味します。これは直感に反するようで、なぜこのように機能するのかわかりません。SignOut は、どのような状況でも実際にユーザーをサインアウトすることを期待しています。
SignOut を単独で機能させる 1 つの方法は、web.config ファイルで Cookie モードを「UseCookies」に変更することです (つまり、Cookie が必要です)。
<authentication mode="Forms">
<forms loginUrl="~/Account/SignIn" cookieless="UseCookies"/>
</authentication>
私のテストによると、これを行うと、サイトが適切に機能するために Cookie が必要になり、SignOut が単独で機能するようになります。