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 beta, но также подтвердил это странное поведение в 2010 SP1. IIS Express говорит, что это версия 7.5.

Ответ 1

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

<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>

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

Ответ 2

щелкните правой кнопкой мыши по проекту и выберите команду iis express перед нажатием F4.

Ответ 3

Иногда мне приходилось сталкиваться с такой же трудностью, но это немного отличалось от того, что я вижу здесь. В моем ноутбуке у меня есть 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"
/>

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