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 больше не находится в корневой папке.

Ответ 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 решила проблему.