ASP.NET MVC на IIS 7.5
Я использую Windows 7 Ultimate (64 бит) с помощью Visual Studio 2010 RC. Недавно я решил, что VS запускает/отлаживает мои приложения в IIS, а не сервер dev, который поставляется с ним.
Однако каждый раз, когда я пытаюсь запустить приложение MVC, я получаю следующую ошибку:
Ошибка HTTP 403.14 - Запрещено Веб-сервер настроен так, чтобы не отображать содержимое этого каталога. Подробное
Информация об ошибке
Модуль DirectoryListingModule
Уведомление ExecuteRequestHandler
Ошибка обработчика StaticFile
Код 0x00000000 Запрашивается
URL http://localhost:80/mySite/
Физическая Путь C:\myProject\mySite\
Метод входа в систему Анонимный вход
Пользователь анонимно
Я поместил в каталог файл default.aspx
, и я получил следующую ошибку:
Ошибка HTTP 500.21 - Внутренний сервер Обработчик ошибок "PageHandlerFactory-Integrated" имеет плохой модуль "ManagedPipelineHandler" в его список модулей
Есть ли еще какие-то шаги, которые я забыл предпринять, чтобы заставить это работать?
Примечания: я установил IIS 7.5 после установки VS 2010 RC. Я использовал встроенную кнопку "Создать виртуальный каталог" на вкладке "Веб" в проекте MVC "Свойства" в Visual Studio 2010. Я убедился, что приложение использует пул приложений ASP.NET 4.
Ниже приведены установленные IIS IIS.
![alt text]()
Ответы
Ответ 1
ASP.NET 4 не был зарегистрирован в IIS. При запуске следующей команды в командной строке/запуске
32bit (x86) Windows
% windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir
64-битная (x64) Windows
% windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
Примечание от Дэвида Мердока:
Что изменилась версия .net поскольку этот ответ был опубликован. Проверьте какая версия рамки находится в % windir%\Microsoft.NET\Framework64 каталог и изменить команду соответственно перед запуском (это в настоящее время v4.0.30319)
Ответ 2
Еще одна вещь, чтобы убедиться, что у вас есть следующий набор в вашем web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Ответ 3
Убедитесь, что в вашем web.config установлен следующий параметр:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Лучшее решение:
Несмотря на то, что выше решение работает абсолютно нормально, это может вызвать другие проблемы, поскольку он запускает все ваши зарегистрированные HTTP-модули по каждому запросу (даже по каждому запросу .jpg.gif.css.html.pdf и т.д.), и это, очевидно, трата ресурсов. Вместо этого
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0"/>
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>
Убедитесь, что атрибут preCondition пуст, означает, что он будет выполняться во всех запросах. [Читать дальше] (http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html, "Прочитать исходный пост" )
Ответ 4
Еще одна причина, по которой кто-то может получить эту ошибку, - это если файл Global.asax больше не находится в корневой папке.
Ответ 5
Я также получал эту ошибку и обнаружил, что "HTTP Redirection" не было включено в Windows Server. Это сообщение в блоге также указывает на это: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx
Ответ 6
Сладкий Иисус. Я пробовал все вышеперечисленные вещи (но нашел, что мои настройки идентичны). ДАЕТЕ ДРУГОЕ РЕШЕНИЕ, если у вас возникли проблемы:
http://support.microsoft.com/kb/980368
Попробуйте установить этот KB для вашей системы. Если вы видите 404s, это может быть из-за того, что у вас нет этого обновления - и модуль isapi просто не найден, и вы не можете этого сделать без этого!
Ответ 7
Также вы можете переключить AppPool на Интегрированный. Thnx Майклу Бьянки (fooobar.com/questions/19745/...), я хочу только подчеркнуть это.
Ответ 8
Для меня на Azure Server 2012 R2 IIS 8.5 VM с приложением Asp.Net MVC 5 (bin развернутый MVC 5) Мне пришлось сделать следующее из подсказки с расширенным cmd, хотя я уже установил 4.5:
dism /online /enable-feature /featurename:IIS-ASPNET45
Источник: http://support.microsoft.com/kb/2736284
Я также скопировал все функции IIS с помощью следующего PowerShell:
import-module servermanager
add-windowsfeature web-server -includeallsubfeature
Источник: http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2
Теперь мое приложение работает.
Ответ 9
Также, если ваше приложение предварительно скомпилировано, вы должны иметь
PrecompiledApp.config
в корневой папке вашего приложения, иначе вы могли бы получить HTTP Error 403.14
.
Ответ 10
У нас было приложение MVC, перенесенное на новый сервер..NET 4 и MVC 3 были установлены, но мы все равно получили "Error 403.14". В этом случае IIS не понимал, что он имеет дело с приложением MVC, он искал страницу по умолчанию.
Решение было простым: перенаправление HTTP не было установлено на сервере.
Менеджер сервера - роли - веб-сервер (IIS) - службы ролей - перенаправление HTTP: не установлено. Устанавливается, проблема решена.
Ответ 11
Другое возможное решение, если вы перемещаете свой global.asax, убедитесь, что разметка указывает на правильный класс MvcApplication. Надеюсь, это спасет кого-то в будущем.
Ответ 12
Я использовал расширение WebDeploy IIS для импорта моих сайтов из IIS6 в IIS7.5, поэтому все настройки IIS были такими же, как и в производственной среде. Попробовав все предоставленные здесь решения, ни один из которых не работал у меня, мне просто пришлось изменить настройку App Pool для веб-сайта от Classic to Integrated.
Ответ 13
Я столкнулся с той же проблемой 404.14. Наконец, проблема была устранена путем снятия "прекомпиляции при публикации" в настройках профиля публикации.
Ответ 14
Я изменил свой маршрут по умолчанию в одной точке:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
To:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index" }
Который дал мне вашу ошибку. Рад, что кто-то упомянул о маршрутизации, потому что я, вероятно, был бы на этом вечно.
Ответ 15
В моем случае ASP.NET 4.5 не установлен на сервере, поэтому установка ASP.NET 4.5 исправила проблему.
Ответ 16
Вы можете решить эту ошибку, запустив cmd как admin
чем
![enter image description here]()
Сделайте то же, что и в картинке для Windows 32 бит
Просто внесите изменения в 64-разрядный формат как framework64 вместо рамки
Чем перейти на iis и обновить сайт
Если вы все еще получили некоторую ошибку, внесите изменения в пул приложений
Ответ 17
У меня возникла другая проблема, которая привела к этой проблеме.
- Я обеспечил запуск моего пула приложений .net 4 в интегрированном режиме
- Я запустил aspnet_regiis.exe -i
- Я проверял права доступа к папкам, которые были правильно установлены для учетной записи, запускающей мой пул приложений.
Ни одна из этих вещей не работала. Оказалось, что в моем web.config в модуле system.webserver > у меня было следующее:
<remove name="WindowsAuthentication" />
Очевидно, это удалило модуль проверки подлинности Windows, который, казалось, как-то сбил все с места.
Я надеюсь, что это поможет кому-то, так как это стоило мне большей части вечера!
Ответ 18
Добавление другого решения для этой проблемы.
в моем файле Global.asax.cs я отключил попытки php файлов из-за использования конвейером MVC, используя следующее:
routes.IgnoreRoute( "{*php}" );
Я делал это ранее в проекте MVC2, и он работал нормально, но это в моем приложении MVC 3 вызвало проблему, описанную выше.
Ответ 19
Еще одна причина, по которой это может произойти: ваши RouteConfig.cs
или WebApiConfig.cs
являются недопустимыми.
В моем случае у меня был маршрут, определенный как таковой (обратите внимание на скобки вместо фигурной скобки):
...
routeTemplate: "api/(something}"
...
Ответ 20
Обратите внимание, что для пользователей Windows 8 вам необходимо добавить/удалить компоненты Windows и удалить версию .net reboot, а затем переустановить, чтобы зарегистрировать его с помощью IIS. Я предполагаю, что это произойдет, если вы получите .net 4.5 из визуальной студии и затем установите IIS.
Ответ 21
Как ни странно, переустановка IIS была тем, что сработало для меня, со следующей командой, запущенной из папки версии .net:
aspnet_regiis.exe /i
![enter image description here]()
Когда я впервые запустил эту команду, я начал получать HTTP-ошибку 403.14. Но как только я снова запустил команду, она решила проблему.
Obs. Еще одна вещь, которую я также сделал, - удалить перенаправление HTTP из функций сервера на экране управления сервером перед повторной установкой IIS. Возможно, это также повлияло на решение проблемы, но я не уверен. Поэтому, если переустановка IIS по-прежнему не работает, попробуйте удалить HTTP-перенаправление и повторите попытку. Надеюсь, это может сработать и для вас.
Ответ 22
Чтобы решить эту проблему, не прибегая к 32-разрядному режиму, вам придется обновить исходный код для этого проекта.
public static void RegisterUrlRoutesFromAttributes(RouteCollection routes)
{
// Enumerate assembly for UrlRoute attributes.
List<MapRouteParams> routeParams = new List<MapRouteParams>();
AppDomain.CurrentDomain.GetAssemblies()
.ToList()
.ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly)));
Я поднял эту проблему как дискуссию на дискуссионном совете в проекте IT-облака Codeplex.
http://itcloud.codeplex.com/discussions/262000
Ответ 23
Если вы используете IIS 8.5 в Windows 8 или Server 2012, вы можете обнаружить, что запуск mvc 4/5 (.net 4.5) не работает в виртуальном каталоге. Если вы создаете запись локального хоста в файле хоста, чтобы указать на свой локальный компьютер, а затем укажите новый локальный веб-сайт IIS в эту папку (с соответствующей записью заголовка узла), вы обнаружите, что она работает тогда.
Ответ 24
Это сработало для меня, и это может быть полезно для другого.
Возможно, все необходимые компоненты отсутствуют или/и не все зарегистрированы правильно. Чтобы решить эту проблему, попробуйте снять все параметры внутри панели управления → Включить или отключить функции Windows → Информационные службы Интернета → Услуги веб-службы World Wide Web → Возможности разработки приложений, снимите все опции и повторите проверку всех reset IIS и проверьте, не решена ли проблема.
![введите описание изображения здесь]()
Ответ 25
Пользовательский интерфейс немного отличается в новых версиях Windows Server. Здесь вы должны включить ASP.Net, чтобы заставить его работать с IIS
![Исправить IIS и Asp.net]()
Ответ 26
Я создал новое пространство имен (и, следовательно, папку), идентичное пути к контроллеру (например, MvcApp/Test/SomeClasses.cs
и MvcApp/Controllers/TestController.cs
). Это привело также к 403.14!
Ответ 27
Для меня решение заключалось в том, чтобы добавить к моему веб-проекту пакет NuGet Microsoft.AspNet.WebPages(плюс его зависимости от Razor и Infrastructure).
Инфраструктура должна была быть принудительно переустановлена, поскольку она не была добавлена сначала как ссылка.
Ответ 28
В моем случае версия .NET CRL в пуле приложений prppertires была установлена на No managed code (не знаю почему).
Установка его в .NET CRL Version v4.0.30319 решила проблему.