ASP MVC в IIS 7 приводит к: Ошибка HTTP 403.14 - Запрещено

Я разрабатываю веб-проект 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:\websites\dirOfApplication и развернута из Visual Studio 8 в эту папку.

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

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

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

Ответ 1

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

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

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

EDIT:

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

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

Ответ 2

Отвечено на 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.

UPDATE: я просто нашел проблему с этой командой. Использование -i обновило все пулы приложений до ASP.NET 4.0.

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

У меня была такая же проблема. Эта статья поддержки Microsoft исправила это для меня.
https://support.microsoft.com/en-us/help/2023146/mvc-2 и-asp.net-4-веб-форм-приложения, которые потребительная URL-маршрутизация может обратную-HTTP-404-ошибка, когда-они-попытка к процессно-extensionless-URLs-на-IIS -7-и-МИС-7,5

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

  • Перейдите к следующему node: Информационные службы Интернета → Всемирные веб-службы → Общие функции HTTP
  • Убедитесь, что выбрана опция "Перенаправление ошибок HTTP".

-or-

  • Перейдите к следующему node: Информационные службы Интернета → Услуги всемирной паутины → Возможности производительности
  • Убедитесь, что выбрана опция "Статическое содержимое". После того, как выбран любой вариант, нажмите "ОК", чтобы сохранить изменения.

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

Ответ 6

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

  • aspnet_regiis -i in Windows\Microsoft.Net\Framework

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

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

Ответ 7

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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

Ответ 8

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

enter image description here

Ответ 9

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

Ответ 10

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

Ответ 11

Как исправить ошибку HTTP 403.14 - Запрещено Веб-сервер настроен так, чтобы не отображать содержимое этого каталога "

Эта ошибка возникает при запуске MVC 2+ в IIS 7+, потому что ASP.NET 4 не был зарегистрирован в IIS. В моем случае я создавал проект MVC 3 и размещал его на IIS 7.5.

Чтобы исправить это, убедитесь, что у вас установлен MVC 2 или выше и .Net Framework 4.0, затем запустите командную строку как администратор и введите следующую строку:

32bit (x86)

% windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir

64 бит (x64)

% windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

Ответ 12

Проверьте файл Global.asax. В моем случае он был пуст.

Ответ 13

Если верхние ответы не работают, найдите конфигурацию с именем PrecompiledApp.config в каталоге хостинга и удалите ее, если она существует. Этот файл предотвращает работу IISExpress и LocalIIS. (И я думаю, что ошибка). Содержимое файла в моем случае было:

<precompiledApp version="2" updatable="true"/>

И я на 100% уверен, что это была проблема с моим делом, так как я пробовал все через 2 часа и много раз проверял эту конфигурацию.

Еще одна вещь: вы не можете использовать aspnet_regiis в новых версиях Windows и IIS, поэтому попробуйте

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

Ответ 14

Я пробовал все здесь; ничего не получилось. Проблема была в моем файле Web.config, некоторая зависимая привязка сборки была изменена с минимального 1 на минимум 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

Ответ 15

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

  • Отсутствующие DLL
  • Строка подключения к базе данных указывает на недоступный сервер.

Ответ 16

Также возможно еще одно:

установить .net framework 4.0 вручную

Это решение для IIS7 в окне 7

открыть cmd с превалированием администрирования

перейти в каталог "C:\Windows\Microsoft.NET\Framework\v4.0.30319"

введите aspnet_regiis.exe -i

достался менеджеру inet, набрав команду run inetmgr

обновите свой IIS7

перезагрузите сайт.

Ответ 17

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

Например, если у вас есть UserController с маршрутом /User и у вас также есть папка в вашем решении под названием "User", то IISExpress будет пытаться просмотреть папку, а не показывать ваш вид.

Ответ 18

В моем случае отсутствуют файлы web.config и все файлы, кроме папки /bin (не скопированы каким-либо образом).
Глупо, но это было последнее, что я проверил.

Ответ 19

Недавно я получил эту ошибку и обнаружил, что проблема вызвана тем, что функция "Перенаправление HTTP" не включена на моем Windows Server. Это сообщение в блоге помогло мне найти ответы на проблемы (несмотря на то, что они были более старыми версиями Windows Server): http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx для новых серверов перейдите в раздел "Управление компьютером", затем прокрутите страницу до роли веб-сервера и нажмите add role services

Ответ 20

Я использую Identity Impersonate:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

При нажатии на сервер вам нужно предоставить доступ к имени пользователя в папке Temporary ASP.NET Files, чтобы он мог правильно читать/записывать/выполнять:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Очевидно, замените "frameworkversion" и "aspversion" на версии, которые вы используете.

Ответ 21

Я использую: Win Server 2012 R2/IIS 8.5/MVC4/.Net 4.5

Если ни одно из вышеперечисленных действий не было выполнено, попробуйте следующее:

Снимите флажок "Прекомпиляция во время публикации"

Это ударило мою задницу в течение нескольких дней.

Ответ 22

В ASP.NET-проекте с С# 4.5 я решил эту проблему, установив расширение ASP.NET в установщике веб-платформы

Ответ 23

У меня была эта проблема, но она была легко исправлена, перейдя в диспетчер служб IIS, дважды щелкнув "Просмотр каталога" и нажав "Включить".

В моем случае я мог напрямую обращаться к файлам, но не мог получить доступ к папкам.

Ответ 24

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

На самом деле мой сайт был STOPPED по какой-то причине, о которой в настоящее время я не знаю, чтобы проверить, есть ли у вас такая же проблема, на главной странице WebsitePanel перейдите в Веб → Веб-сайты, затем выберите доменное имя вашего веб-сайта из списка, после чего в правой части только что открывшейся страницы проверьте, не появилось ли слово НАЧАЛО, иначе, если вы увидите слово STOPPED, запустите его снова. Это все.

Ответ 25

Я неправильно набрал IP-адрес одной цифрой, что означало, что он идет на один из моих других серверов. Очень запутанно, поскольку вы получаете страницу с ошибкой .NET, но не с того компьютера!

Ответ 26

Попробовав каждое из предложенных здесь решений, я нашел еще одно возможное решение: URLScan

В IIS был отключен WebDAV, даже в файле web.config моего приложения был удален обработчик и модуль WebDAV. PUT по-прежнему возвращали 403 - запрещено без каких-либо записей в журналах IIS. (GET/POST работал нормально).

Оказывается, в IIS был активирован активный фильтр ISAPI (URLScan), который предотвращал все PUT. После удаления URLScan у меня все заработало.

Ответ 27

Добавив еще один ответ здесь. Если вы используете Windows 2016 Server с IIS 10.0, это может быть связано с тем, что IIS установлен неправильно. Вот что я бы посоветовал, если вы окажетесь здесь.

  1. В Visual Studio проверьте версию платформы .NET, которую вы использовали для разработки приложения. Щелкните правой кнопкой мыши по проекту, странице свойств, вкладке приложения. Целевые рамки. В моем случае это был 4.6.1.

  2. На веб-сервере Google "загрузите .net framework 4.6.1" и перейдите на страницу загрузки MS, которая должна правильно определить версию, которая вам необходима для вашего пользовательского агента браузера. В моем случае это был X64.

  3. Запустите установщик. Обратите внимание, что это безопасно, даже если вы думаете, что это может быть уже там. Он скажет "уже установлен", если это так.

Примечание: теперь вы должны убедиться, что он правильно "включен" как функция Windows. Также необходимо убедиться, что компоненты ASP.NET IIS также правильно установлены и включены.

  1. Снова на веб-сервере перейдите в Диспетчер серверов, добавьте роли и функции, затем выберите на основе ролей или функций. Затем нажмите Далее.

  2. Убедитесь, что на вкладке конечного сервера выбран локальный сервер, и нажмите "Далее".

  3. На вкладке роли сервера разверните Веб-сервер IIS и Разработка приложений. Мне нужно все, кроме серверной части и протоколов Websocket.

  4. В разделе "Инструменты управления" я решил включить все (включая IIS 6 MMC) из-за определенных устаревших функций, которые я хотел, но это другой пост.

В моем случае перезагрузка не требовалась. Надеюсь, это кому-нибудь поможет.

Ответ 28

Моя ситуация была совершенно иной, чем любая из них, и сообщение об ошибке 403: Forbidden было немного красной селедкой.

Если ваша функция Application_Start() в модуле Global.asax пытается получить доступ к web.config, а запись, на которую она ссылается, отсутствует, IIS блокируется и (по некоторым причинам) выдает сообщение об ошибке 403: Forbidden.

Дважды проверьте, что вы не пропустили запись в файле web.config, которая пытается получить доступ в вашем модуле Global.asax.

Ответ 29

Если вы похожи на меня и у вас есть приложение, использующее NHibernate, и приведенные выше ответы не решили вашу проблему.

Вы должны посмотреть на строку подключения в вашем приложении; возможно в файле webconfig, чтобы убедиться, что это правильно.

Ответ 30

Шаг 1: выберите сайт, для которого HTTP-ошибка создается в IIS, а затем нажмите "Просмотр каталога", как показано на рисунке ниже:

Шаг 2. В окне просмотра каталога в IIS нажмите "Включить" в действиях с правой стороны, как показано на диаграмме ниже:

Теперь просмотр каталога включен для вашего сайта asp.net, просто перезапустите веб-приложение в IIS и просмотрите сайт в своем браузере и посмотрите результат.