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