わかりましたので、これは大したことではありませんが、それは私を悩ませていると私はそれを手放すことはできません。
そのため、.NET 4.5.1およびOWIN認証でMVC 5.1を使用しています。したがって、新しいMVC 5プロジェクトを作成すると、OWINミドルウェアを使用する際にフォーム認証HTTPモジュールが不要になるため、Web.configに以下が自動的に追加され、フォーム認証httpモジュールが削除されます。
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
</modules>
</system.webServer>
モジュールを削除しているので、それは以前に追加されたことを意味するので、C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config
にこのhttpモジュールを登録するエントリは次のとおりです。
<httpModules>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
</httpModules>
そして、IIS 8.5の場合のC:\Windows\System32\inetsrv\config\applicationHost.config
のエントリは、アプリケーションにモジュールを使用するよう指示します。
<system.webServer>
<modules>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
</modules>
</system.webServer>
したがって、アプリケーションレベルで私のWeb構成に自動的に追加されるものには、「FormsAuthenticationModule」という名前属性がありますが、2つのサーバーレベル/asp.netレベル構成ファイルのエントリは、名前属性「FormsAuthentication」を使用します。ここで何が起こっているのでしょうか? name属性が一致しないため、モジュールは削除されないようです。これは単なるタイプミスだと思いますが、オンラインで検索した後、誰もがアプリケーションweb.configで「FormsAuthenticationModule」を使用しているようです。これは、asp.net/iisの新しいバージョンの最近の変更でしたか、それとも何か不足していますか?
あなたは正しいです-それはテンプレートのタイプミスです。
この「タイプミス」の主な副作用は、owinのloginpathが無視され、認証されたページへの呼び出しが/login.aspxになるとFormsAuthenticationが残ることです。