IIS Express автоматически отключает анонимную аутентификацию для моего проекта, почему?

Когда я переключаю свой проект ASP.NET MVC с веб-сервера Cassini на IIS Express, это добавляется к моему applicationhost.config файл:

<location path="MyProject">
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" />
                <windowsAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

Это приводит к тому, что сайт не загружается с 401.2 - Несанкционировано, и я не могу исправить это на уровне Web.config - он будет жаловаться, что раздел заблокирован на родительском уровне (HTTP 500.19).

Я могу это исправить, исправив applicationhost.config файл, но я не понимаю, зачем мне это нужно, когда такой раздел не добавлен для ванильного проекта ASP.NET MVC. Что может быть не так?

Я использую бета-версию VS 11, но также подтвердил это странное поведение в 2010 SP1. IIS Express говорит, что это версия 7.5.

3 ответа

Решение

Это было потому, что по какой-то причине это было в моем файле csproj:

<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>

Установка его в enabled устраняет проблему (это также можно сделать из Visual Studio, выбрать проект, F4, установить для анонимной аутентификации в сетке свойств значение "Включено").

Пожалуйста, щелкните правой кнопкой мыши на проекте и выберите "Использовать iis Express" перед нажатием F4.

Иногда назад я сталкивался с той же трудностью, но она немного отличалась от того, что я вижу здесь. В моем ноутбуке у меня есть VS 08 и VS 13, а также SQL Server 2008 R2 и 11G XE. Для веб-сайтов подключение к R2 никогда не было проблемой, но когда я пытался создать веб-сайт, используя oracle-членство с asp.net, я обнаружил, что страницы открываются, но страницы в папке с ролями не открываются и дают мне сообщение об отказе в доступе. Несмотря на то, что в папке был правильный файл web.config, и пользователь создал с той же ролью, он все равно выдавал ту же ошибку. Наконец, я понял, что мне нужен механизм аутентификации, и добавил следующий код в system.web файла web.config:

<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" slidingExpiration="true"
timeout="90" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="false"/>
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>

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

Другие вопросы по тегам