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 установлен неправильно. Вот что я бы посоветовал, если вы окажетесь здесь.
В Visual Studio проверьте версию платформы .NET, которую вы использовали для разработки приложения. Щелкните правой кнопкой мыши по проекту, странице свойств, вкладке приложения. Целевые рамки. В моем случае это был 4.6.1.
На веб-сервере Google "загрузите .net framework 4.6.1" и перейдите на страницу загрузки MS, которая должна правильно определить версию, которая вам необходима для вашего пользовательского агента браузера. В моем случае это был X64.
Запустите установщик. Обратите внимание, что это безопасно, даже если вы думаете, что это может быть уже там. Он скажет "уже установлен", если это так.
Примечание: теперь вы должны убедиться, что он правильно "включен" как функция Windows. Также необходимо убедиться, что компоненты ASP.NET IIS также правильно установлены и включены.
Снова на веб-сервере перейдите в Диспетчер серверов, добавьте роли и функции, затем выберите на основе ролей или функций. Затем нажмите Далее.
Убедитесь, что на вкладке конечного сервера выбран локальный сервер, и нажмите "Далее".
На вкладке роли сервера разверните Веб-сервер IIS и Разработка приложений. Мне нужно все, кроме серверной части и протоколов Websocket.
В разделе "Инструменты управления" я решил включить все (включая 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 и просмотрите сайт в своем браузере и посмотрите результат.