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