ASP.NET MVC на IIS 7.5 - PullRequest
       116

ASP.NET MVC на IIS 7.5

333 голосов
/ 04 марта 2010

Я использую Windows 7 Ultimate (64-разрядную версию) с использованием Visual Studio 2010 RC. Недавно я решил, чтобы VS запускал / отлаживал мои приложения на IIS, а не на dev-сервере, который поставляется вместе с ним.

Однако каждый раз, когда я пытаюсь запустить приложение MVC, я получаю следующую ошибку:

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

Информация об ошибке

Модуль DirectoryListingModule

Уведомление ExecuteRequestHandler

Ошибка статического обработчика

Код 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.

alt text

Ответы [ 28 ]

495 голосов
/ 04 марта 2010

ASP.NET 4 не был зарегистрирован в IIS. Пришлось выполнить следующую команду в командной строке / run

32-битная (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)

198 голосов
/ 23 июня 2011

Еще одна вещь, которую нужно убедиться, это следующий набор в вашем файле web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>
76 голосов
/ 05 марта 2013

Убедитесь, что в вашем файле 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,"Read оригинальный пост ")

42 голосов
/ 13 сентября 2011

Другая причина, по которой кто-то может получить эту ошибку, заключается в том, что файл Global.asax больше не находится в корневой папке.

20 голосов
/ 21 октября 2011

Я также получил эту ошибку и обнаружил, что «Перенаправление HTTP» не было включено в Windows Server. Этот пост также указывает на это: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx

15 голосов
/ 28 января 2012

Сладкий Иисус. Я перепробовал все вышеперечисленное (но мои настройки были идентичны). ЕЩЕ ДРУГОЕ РЕШЕНИЕ, если у вас возникли проблемы:

http://support.microsoft.com/kb/980368

Попробуйте установить этот KB для вашей системы. Если вы видите 404-е, это может быть потому, что у вас нет этого обновления - и модуль isapi просто не найден, и вы ничего не можете с этим поделать!

7 голосов
/ 11 января 2012

Также вы можете переключить AppPool в Интегрированный режим . Спасибо Майклу Бьянки (https://stackoverflow.com/a/7956546/1143515), Я только хочу подчеркнуть это.

7 голосов
/ 25 июля 2014

Для меня на виртуальной машине Azure Server 2012 R2 IIS 8.5 с приложением Asp.Net MVC 5 (bin развернут MVC 5) мне нужно было сделать следующее из командной строки с повышенными привилегиями, хотя у меня уже была установлена ​​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

Теперь мое приложение работает.

6 голосов
/ 04 марта 2013

Мы перенесли приложение MVC на новый сервер..NET 4 и MVC 3 были установлены, но мы все равно получили «Ошибка 403.14».В этом случае это означало, что IIS не понимал, что оно имеет дело с приложением MVC, он искал страницу по умолчанию.

Решение было простым: перенаправление HTTP не было установлено на сервере.*

Диспетчер серверов - Роли - Веб-сервер (IIS) - Службы ролей - Перенаправление HTTP: не установлено.Установил, проблема решена.

5 голосов
/ 26 сентября 2012

Также, если ваше приложение предварительно скомпилировано, вы должны иметь

PrecompiledApp.config

в корневой папке вашего приложения, в противном случае вы также можете получить HTTP Error 403.14.

...