ASP.NET: отключить аутентификацию для одной страницы aspx (настраиваемая страница ошибок)? - PullRequest
5 голосов
/ 29 марта 2010

Я использую пользовательскую страницу ошибок в IIS 6:

<customErrors redirectMode="ResponseRedirect" mode="On" defaultRedirect="Error2.aspx"/>

Я хочу отключить аутентификацию для пользовательской страницы ошибок, поскольку возникающая ошибка связана с модулем аутентификации, и я не хочу входить в бесконечный цикл и хочу отобразить чистую страницу ошибок для пользователя. Я пробовал следующую конфигурацию, чтобы сделать это.

<location path="Error2.aspx">
 <system.web>
   <authentication mode="None"/>
   <authorization>
     <allow users="?"/>
     <allow users="*"/>
   </authorization>
 </system.web>
</location>

Я получаю System.Configuration.ConfigurationErrorsException для строки, которая устанавливает режим аутентификации.

Ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication', за пределами уровня приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.

Я убедился, что в подкаталогах внутри папки приложения нет других файлов web.config. Папка приложений настроена как приложение в IIS, а страница ошибки находится в корне приложения. Права доступа к файлам, установленные для страницы ошибок в IIS, включают анонимную проверку подлинности и проверку подлинности Windows (я пробовал также только анонимную).

Ответы [ 3 ]

1 голос
/ 30 марта 2010

Проверьте следующую ссылку . Он содержит информацию, которая может помочь в отношении тега location.

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

Более простой подход - переместить все файлы ошибок и страницы, которые вы хотите, чтобы они всегда были доступны, в их собственный каталог, а затем добавить файл web.config в каталог, который предоставляет доступ без аутентификации.

1 голос
/ 31 марта 2010

Я изменил свой режим перенаправления ошибок на rewriteResponse. При этом для страницы ошибки не выдается отдельный запрос, модуль проверки подлинности, который вызывает ошибку, не выполняется повторно и т. Д.

Я могу представить, что этого может быть недостаточно в некоторых сценариях (возможно, MVC-фреймворк?), Но для моего случая использования этого было достаточно.

На данный момент я собираюсь ответить на свой вопрос с помощью этого обходного пути, который я придумала, если только кто-то еще не сможет продемонстрировать способ действительно отключить аутентификацию, как было первоначально заявлено.

0 голосов
/ 29 марта 2010

Откройте настройки IIS и убедитесь, что корневой IIS (machine.config) разрешает запись в нарушающее свойство (либо system.web.authentication, либо system.web.authorization, в зависимости от номера строки, указанного в ошибке) .

После этого очистите ваше решение и восстановите его. У меня была эта проблема, и она не имела ничего общего с настройками machine.config или web.config. По какой-то причине очистка и перестройка позволили устранить ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...