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