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

+323
источник поделиться
28 ответов

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)

+486
источник

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

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>
+193
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

+74
источник

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

+38
источник

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

+19
источник

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

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

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

+13
источник

Также вы можете переключить AppPool на Интегрированный. Thnx Майклу Бьянки (qaru.site/questions/19745/...), я хочу только подчеркнуть это.

+7
источник

Для меня на 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

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

+7
источник

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

PrecompiledApp.config

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

+5
источник

У нас было приложение MVC, перенесенное на новый сервер..NET 4 и MVC 3 были установлены, но мы все равно получили "Error 403.14". В этом случае IIS не понимал, что он имеет дело с приложением MVC, он искал страницу по умолчанию.

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

Менеджер сервера - роли - веб-сервер (IIS) - службы ролей - перенаправление HTTP: не установлено. Устанавливается, проблема решена.

+5
источник

Другое возможное решение, если вы перемещаете свой global.asax, убедитесь, что разметка указывает на правильный класс MvcApplication. Надеюсь, это спасет кого-то в будущем.

+4
источник

Я использовал расширение WebDeploy IIS для импорта моих сайтов из IIS6 в IIS7.5, поэтому все настройки IIS были такими же, как и в производственной среде. Попробовав все предоставленные здесь решения, ни один из которых не работал у меня, мне просто пришлось изменить настройку App Pool для веб-сайта от Classic to Integrated.

+4
источник

Я столкнулся с той же проблемой 404.14. Наконец, проблема была устранена путем снятия "прекомпиляции при публикации" в настройках профиля публикации.

+4
источник

Я изменил свой маршрут по умолчанию в одной точке:

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" }

Который дал мне вашу ошибку. Рад, что кто-то упомянул о маршрутизации, потому что я, вероятно, был бы на этом вечно.

+4
источник

В моем случае ASP.NET 4.5 не установлен на сервере, поэтому установка ASP.NET 4.5 исправила проблему.

+4
источник

Вы можете решить эту ошибку, запустив cmd как admin чем enter image description here

Сделайте то же, что и в картинке для Windows 32 бит

Просто внесите изменения в 64-разрядный формат как framework64 вместо рамки Чем перейти на iis и обновить сайт
Если вы все еще получили некоторую ошибку, внесите изменения в пул приложений

+4
источник

У меня возникла другая проблема, которая привела к этой проблеме.

  • Я обеспечил запуск моего пула приложений .net 4 в интегрированном режиме
  • Я запустил aspnet_regiis.exe -i
  • Я проверял права доступа к папкам, которые были правильно установлены для учетной записи, запускающей мой пул приложений.

Ни одна из этих вещей не работала. Оказалось, что в моем web.config в модуле system.webserver > у меня было следующее:

<remove name="WindowsAuthentication" />

Очевидно, это удалило модуль проверки подлинности Windows, который, казалось, как-то сбил все с места.

Я надеюсь, что это поможет кому-то, так как это стоило мне большей части вечера!

+3
источник

Добавление другого решения для этой проблемы.

в моем файле Global.asax.cs я отключил попытки php файлов из-за использования конвейером MVC, используя следующее:

routes.IgnoreRoute( "{*php}" );

Я делал это ранее в проекте MVC2, и он работал нормально, но это в моем приложении MVC 3 вызвало проблему, описанную выше.

+2
источник

Еще одна причина, по которой это может произойти: ваши RouteConfig.cs или WebApiConfig.cs являются недопустимыми.

В моем случае у меня был маршрут, определенный как таковой (обратите внимание на скобки вместо фигурной скобки):

...
routeTemplate: "api/(something}"
...
+2
источник

Обратите внимание, что для пользователей Windows 8 вам необходимо добавить/удалить компоненты Windows и удалить версию .net reboot, а затем переустановить, чтобы зарегистрировать его с помощью IIS. Я предполагаю, что это произойдет, если вы получите .net 4.5 из визуальной студии и затем установите IIS.

+2
источник

Как ни странно, переустановка IIS была тем, что сработало для меня, со следующей командой, запущенной из папки версии .net:

aspnet_regiis.exe /i

enter image description here

Когда я впервые запустил эту команду, я начал получать HTTP-ошибку 403.14. Но как только я снова запустил команду, она решила проблему.

Obs. Еще одна вещь, которую я также сделал, - удалить перенаправление HTTP из функций сервера на экране управления сервером перед повторной установкой IIS. Возможно, это также повлияло на решение проблемы, но я не уверен. Поэтому, если переустановка IIS по-прежнему не работает, попробуйте удалить HTTP-перенаправление и повторите попытку. Надеюсь, это может сработать и для вас.

+2
источник

Чтобы решить эту проблему, не прибегая к 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

+1
источник

Если вы используете IIS 8.5 в Windows 8 или Server 2012, вы можете обнаружить, что запуск mvc 4/5 (.net 4.5) не работает в виртуальном каталоге. Если вы создаете запись локального хоста в файле хоста, чтобы указать на свой локальный компьютер, а затем укажите новый локальный веб-сайт IIS в эту папку (с соответствующей записью заголовка узла), вы обнаружите, что она работает тогда.

+1
источник

Это сработало для меня, и это может быть полезно для другого.

Возможно, все необходимые компоненты отсутствуют или/и не все зарегистрированы правильно. Чтобы решить эту проблему, попробуйте снять все параметры внутри панели управления → Включить или отключить функции Windows → Информационные службы Интернета → Услуги веб-службы World Wide Web → Возможности разработки приложений, снимите все опции и повторите проверку всех reset IIS и проверьте, не решена ли проблема.

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

+1
источник

Пользовательский интерфейс немного отличается в новых версиях Windows Server. Здесь вы должны включить ASP.Net, чтобы заставить его работать с IIS

Исправить IIS и Asp.net

+1
источник

Я создал новое пространство имен (и, следовательно, папку), идентичное пути к контроллеру (например, MvcApp/Test/SomeClasses.cs и MvcApp/Controllers/TestController.cs). Это привело также к 403.14!

0
источник

Для меня решение заключалось в том, чтобы добавить к моему веб-проекту пакет NuGet Microsoft.AspNet.WebPages(плюс его зависимости от Razor и Infrastructure).

Инфраструктура должна была быть принудительно переустановлена, поскольку она не была добавлена ​​сначала как ссылка.

0
источник

В моем случае версия .NET CRL в пуле приложений prppertires была установлена ​​на No managed code (не знаю почему). Установка его в .NET CRL Version v4.0.30319 решила проблему.

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос