ASP MVC в IIS 7 приводит к: ошибка HTTP 403.14 - запрещено - PullRequest
143 голосов
/ 16 ноября 2009

Я занимаюсь разработкой веб-проекта ASP MVC. Теперь у меня есть требование, которое вынуждает меня развернуться в среде разработки IIS7 (чтобы проверить некоторые функции). Я получаю вышеупомянутое сообщение об ошибке всякий раз, когда я пытаюсь ввести URL-адрес веб-сайта. (Примечание: машина для разработки: Vista Home Premium, IIS7)

Что я делал до сих пор:

Отредактировал файл HOSTS (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

Поместите в него два домена (127.0.0.1 domain1.com и 127.0.0.1 domain2.com).

Создана папка c: \ sites \ dirOfApplication и развернута из Visual Studio 8 в эту папку.

В IIS7 создан новый сайт с именем хоста domain1.com и папкой приложения выше.

При вводе адреса domain1.com в веб-браузере возникает указанная выше ошибка (ошибка HTTP 403.14 - Запрещено - веб-сервер настроен так, чтобы не перечислять содержимое этого каталога.)

Я думаю, что что-то упустил, но не знаю что! Попытался развернуть файлы System.Web.Mvc, System.Web.Abstraction & System.Web.Routing с тем же результатом. Всякий раз, когда я пытаюсь нажать F5 и запустить приложение, оно отлично работает!

Ответы [ 28 ]

222 голосов
/ 14 июня 2012

Может быть, это кому-нибудь пригодится: После преобразования моего приложения в MVC 4 с .NET Framework 4.5 и установки инфраструктуры на моем сервере с IIS 7.0 я столкнулся с той же «запрещенной» ошибкой, упомянутой в вопросе. Я попробовал все варианты, описанные выше, но безрезультатно, когда заметил

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

отсутствует в моем файле web.config. После добавления этого все заработало. Просто, но легко упустить из виду ...

EDIT:

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

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
122 голосов
/ 14 июля 2011

Отвечено на SO здесь , вопрос: 403 - Запрещено на базовом развертывании MVC 3 на iis7.5

Выполнить aspnet_regiis -i. Часто я обнаружил, что вам нужно сделать это, чтобы заставить работать приложения 4.0. Откройте командную строку как Administrator (щелкните правой кнопкой мыши значок командной строки и выберите «Запуск от имени администратора»):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

После установки и регистрации убедитесь, что ваше приложение использует пул приложений, установленный на .NET 4.0.

ОБНОВЛЕНИЕ: Я только что нашел проблему с этой командой. Использование -i обновило все пулы приложений до ASP.NET 4.0.

Использование aspnet_regiis -ir устанавливает версию ASP.NET, но не меняет веб-приложения на эту версию. Вы также можете просмотреть опцию -iru.

30 голосов
/ 16 сентября 2012

Я тоже столкнулся с этой ошибкой. Все настройки и разрешения были правильными. Но я забыл скопировать Global.asax на сервер, и это привело к ошибке 403.

10 голосов
/ 16 ноября 2009

Это из-за того, что вы слишком уверены в том, что вы (я) делаете!

На моем компьютере установлен IIS 7, но требуемого компонента ASP.NET (Панель управления-> Программы-> Включить / Выключить-> ASP.NET) не было.

Таким образом, установка этой проблемы решена

7 голосов
/ 28 марта 2011

У меня была такая же проблема. Эта статья поддержки Microsoft исправила это для меня.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http-404-errors-when-they-attempt-to-process-extensionless-urls-on-iis-7-and-iis-7.5

В диалоговом окне «Включение или отключение компонентов Windows» приложения «Программы и компоненты» панели управления Windows выполните следующие действия:

  1. Перейдите к следующему узлу: Информационные службы Интернета -> Службы всемирной паутины -> Общие функции HTTP
  2. Убедитесь, что выбран параметр «Перенаправление ошибок HTTP».

-или-

  1. Перейдите к следующему узлу: Информационные службы Интернета -> Службы всемирной паутины -> Функции производительности
  2. Убедитесь, что выбран параметр «Сжатие статического содержимого». После того, как любой из вариантов был выбран, нажмите «ОК», чтобы сохранить изменения.

Повторное включение либо модуля перенаправления ошибок HTTP, либо модуля сжатия статического содержимого гарантирует, что ASP.NET и IIS правильно синхронизируют события конвейера HTTP. Это позволяет модулю маршрутизации URL обрабатывать URL без расширений.

7 голосов
/ 28 декабря 2016

Попробуйте применить следующие настройки, показанные ниже:

1) Дайте необходимое разрешение пользователю IIS_IUSRS на IIS Server (щелкните правой кнопкой мыши на веб-сайте, затем выберите «Редактировать разрешения> Безопасность»).

enter image description here

2) Если вы используете .NET Framework 4, убедитесь, что версия .NET Framework v4.0 на Application Pool, которую использует ваш веб-сайт.

enter image description here

Надеюсь, это поможет ...

7 голосов
/ 05 апреля 2013

В моем случае мне помог следующий подход:

  1. aspnet_regiis -i в Windows\Microsoft.Net\Framework

  2. Добавление модулей в system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
    
6 голосов
/ 29 июля 2011

Пожалуйста, также проверьте, если вы используете x64, что вы включили 32-битные приложения в настройках пула приложений

enter image description here

4 голосов
/ 06 августа 2015

На Снимите флажок «Прекомпилировать во время публикации» - я получил ошибку 403.14 на веб-службе, которую я только что написал в VS2015, поэтому я переписал ее в VS2013 и получил та же ошибка. В обоих случаях у меня была «Прекомпиляция во время публикации». Я снял флажок, но все еще получал ошибку. В моем случае у меня также было « Удалить все существующие файлы перед публикацией », но я не удалял все из целевого каталога на сервере перед копированием туда новых опубликованных файлов. Если вы этого не сделаете - файл " PrecompiledApp.config " останется позади, что вызывает проблему. После того, как я удалил этот файл, у меня возникли проблемы с версией моего веб-сервиса VS2013 и VS2015.

2 голосов
/ 22 января 2013

Обратите внимание, что иногда неправильно Managed pipeline mode приведет к этой ошибке. Существует два варианта выбора integrated и classic.

...