MVC を統合する従来の ASP.Net Web サイトがあります。web.config で標準の認証タグを使用して Web フォーム認証を使用します。
<authorization>
<deny users="?"/>
</authorization>
過去に、次のような場所を使用してさまざまなフォルダーを公開できました。
<location path="Public">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
MVC といくつかのコントローラーを追加したので、いくつかのコントローラー アクションを完全に公開する必要があります。ただし、web.config のロケーション タグを使用してこれを行うことはできません。認証されていないときにアクションの URL にアクセスしようとすると、ASP.Net によってログイン ページ (web.config で指定) にリダイレクトされます。これらのコントローラー アクションのいずれにも Authorization 属性を使用していません。
保護が必要なすべての Web フォームへのセキュリティを破る範囲内で、これらへのアクセスを開くにはどうすればよいですか?
編集:
保護したいアクションに対して [Authorize] を使用していることを明確にしたいと思います。公開したい質問のアクションは [Authorize] 属性を使用しておらず、ログインしない限りアクセスできません。
編集2:
私はいくつかの IIS トレースを実行しましたが、これは実際に認証の失敗であり、他のエラーではないことを確信していると思います。アクセスしようとしている場所とルートの例を次に示します。
<location path="WC">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
そしてルート:
routes.MapRoute(
"WC", // Route name
"WC/{id}",
new { action = "GetWC", controller = "WC" } // URL with parameters
);
そして、失敗している URL:
http://localhost/MyWebApp/WC/42
私は実際にこれを処理するより一般的なルートを持っていますが、疑問を取り除くためにこれを追加しました。いずれにせよ、これはログインした状態で正常に機能します。