У меня есть устаревший веб-сайт ASP.Net, в который я интегрирую MVC. Я использую аутентификацию веб-форм со стандартным тегом авторизации в web.config:
<authorization>
<deny users="?"/>
</authorization>
В прошлом мне удавалось сделать общедоступными различные папки, используя такие места, как:
<location path="Public">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
С дополнительным MVC и несколькими контроллерами мне нужно сделать несколько действий контроллера полностью общедоступными. Однако я не могу сделать это, используя тег местоположения в web.config. Если я попытаюсь перейти по URL-адресу действия, не пройдя аутентификацию, ASP.Net перенаправит меня обратно на мою страницу входа (указанную в web.config). Я не использую атрибут авторизации ни в одном из этих действий контроллера.
Как мне открыть доступ к ним при нарушении безопасности для всех веб-форм, которые нуждаются в защите?
Редактировать:
Я хочу прояснить, что я использую [Авторизовать] для действий, которые хочу защитить. Действия в вопросах, которые я хочу сделать общедоступными, не используют атрибут [Авторизовать] и по-прежнему недоступны, если вы не вошли в систему.
Редактировать 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
На самом деле у меня есть более общий маршрут, который обрабатывает это, но я добавил это, чтобы развеять любые сомнения. В любом случае это отлично работает при входе в систему.