Проблема при получении приложения ASP.NET MVC для перенаправления на страницу ошибки для неавторизованных пользователей - PullRequest
2 голосов
/ 16 июня 2009

В web.config моего приложения ASP.NET MVC настроено следующее:

<authentication mode="Windows" />
<authorization>
    <allow roles="MySecurityGroup"/>
    <deny users="*"/>
</authorization>
<customErrors mode="On" defaultRedirect="Error.aspx">
    <error statusCode="401" redirect="Help.aspx"/>
</customErrors>

Все работает нормально, если вы находитесь в MySecurityGroup, но если нет, вы не перенаправлены ни на Error.aspx, ни на Help.aspx. (Обратите внимание, что Error.aspx находится в Views \ Shared, а Help.aspx находится в Views \ Home.) Все, что вы получаете, это ошибка по умолчанию:

Ошибка сервера в «/» приложении.

Доступ запрещен.

Описание: произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса. Сервер не может быть настроен для доступа к запрошенному URL.

Сообщение об ошибке 401.2 .: неавторизовано: сбой входа в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов аутентификации, включенных на веб-сервере. Обратитесь к администратору веб-сервера за дополнительной помощью.

Что я делаю не так?

ОБНОВЛЕНИЕ: Теперь мой web.config настроен так, и он все еще не работает:

<system.web>
    <customErrors mode="On" defaultRedirect="Help.aspx">
    </customErrors>
</system.web>

<location path="">
    <system.web>
        <authorization>
            <allow roles="MySecurityGroup"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

<location path="Help">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

Обратите внимание, что я могу легко перейти к MyApp / Help и правильно заблокирован для остальных сайтов, но он никогда не перенаправляется на страницу справки автоматически.

Ответы [ 2 ]

1 голос
/ 16 июня 2009

Вы должны явно предоставить доступ другим группам к Error.aspx и / или Help.aspx, чтобы они действительно могли попасть на страницы. То, как вы его настроили прямо сейчас, только пользователи MySecurityGroup могут получить на страницы.

Вам понадобится что-то вроде этого:

<location path="Error.aspx">
 <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
 </system.web>
</location>

и то же самое для Help.aspx. В качестве альтернативы вы можете сделать это на уровне папки.

0 голосов
/ 10 октября 2009

Хотите, чтобы страницы ошибок и справки обрабатывались mvc или asp.net? В настоящее время вы рассматриваете страницы как представления mvc, но у вас есть URL-адреса перенаправления, которые отображаются на конвейер asp.net. При угадывании переместите ошибку и справку в корневую директорию сайта, и она должна работать

...