Назад | Перейти на главную страницу

Страница входа выдает ошибку 401 с проверкой подлинности с помощью форм

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

В моем приложении включена проверка подлинности с помощью форм, и анонимный доступ запрещен:

<configuration>
...
<system.web>      
...  
    <authentication mode="Forms">
        <forms name=".ASPXFORMSAUTH" loginUrl="Account/Authenticate.aspx"></forms>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>

Доступ к странице входа разрешен:

</system.web>

<location path="Account/Authenticate.aspx">
    <system.web>
        <authorization>
            <allow users="?"/>
        </authorization>
    </system.web>
</location>

Анонимная проверка подлинности включена в диалоговом окне свойств проекта, а проверка подлинности Windows отключена. Я также проверил файл applicationhost.config для IIS Express в своих документах. В нем отключены все режимы аутентификации, кроме анонимного. Я использую IIS Express в качестве сервера отладки.

Насколько мне известно, это все, что вы должны сделать для устранения ошибки отказа в доступе, но в моем браузере все еще появляется следующее сообщение об ошибке:

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

Интересно отметить, что если я включу проверку подлинности Windows, страница входа в систему будет отображаться правильно. Однако это не работает, когда сайт развернут. Если он развернут, то активация аутентификации Windows просто вызовет всплывающее окно JavaScript с запросом кредитов (а не в форме, которую я создал).

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

редактировать

В качестве окончательного решения я просто вручную аутентифицировал пользователей. Насколько известно IIS, анонимный доступ не ограничен, но сеанс проверяется при каждом запросе, чтобы убедиться, что пользователь вошел в систему (сеанс - это то место, где я храню свой объект подключения к БД для каждого пользователя). Для статического контента я просто использую обработчики HTTP, которые используют состояние сеанса только для чтения для проверки доступа перед обслуживанием файлов.