Вопрос

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

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

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

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

Модуль DirectoryListingModule

Обработчик запросов исполнителя уведомлений

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

Запрошенный код 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

Это было полезно?

Решение

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

32-битные (x86) окна

% Windir% Microsoft.net framework v4.0.30319 aspnet_regiis.exe -ir

64 бит (x64) окна

% Windir% Microsoft.net frame64 v4.0.30319 aspnet_regiis.exe -ir

Примечание из комментария Дэвида Мердоха:

Что версия .NET изменилась, поскольку этот ответ был опубликован. Проверьте, какая версия Framework находится в каталоге% Windir% Microsoft.net Framework64 и изменить команду соответственно перед запуском (в настоящее время v4.0.30319)

Другие советы

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

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

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

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

Лучшее решение:

Даже если выше решение работает абсолютно хорошо, это может вызвать другую проблему, поскольку она запускает все ваши зарегистрированные HTTP-модули на каждом запросе (даже на каждом запросе .jpg .gifs.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>

Убедитесь, что атрибут предварительного обеспечения пустой означает, что он будет работать по всем запросам. [Подробнее](http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanageModulesfo.html.html., «Читать оригинальный пост»)

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

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

Сладкий Иисус. Я пробовал все вышеперечисленные вещи (но нашли свои настройки идентичными). Еще одно решение, если у вас возникли проблемы:

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

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

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

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

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

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

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

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

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

PrecompiledApp.config

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

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

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

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

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

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

К:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index" }

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

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

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

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

Просто внесите изменения в 64 бита как Framework64 вместо рамки только, чем перейти к IIS и обновить сайт
Если у вас все еще есть ошибка вносит изменения в пул приложения

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

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

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

<remove name="WindowsAuthentication" />

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

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

Уэй немного отличается в более новых версиях Windows Server. Вот где вы должны включить ASP.NET, чтобы заставить его работать над IIS

Fix IIS & Asp.net

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

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

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

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

Еще одна причина это может произойти - ваш RouteConfig.cs или WebApiConfig.cs недействительны.

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

...
routeTemplate: "api/(something}"
...

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

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

aspnet_regiis.exe /i

enter image description here

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

Особняк: Еще одна вещь, которую я также сделал, было удаление HTTP Redirect с функций сервера на экране управления сервером, прежде чем reiInstalling IIS. Может быть, это также оказало влияние в решении проблемы, но я не уверен. Итак, если переустановка IIS до сих пор не работает, пожалуйста, попробуйте удалить HTTP Redirect и попробуйте снова. Надеюсь, это может работать для вас тоже.

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

Я поднял эту проблему в качестве обсуждения на дискуссионном совете по проекту COLDEPLEX IT.

http://itcloud.codeplex.com/discussions/262000.

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

Может быть, все необходимые компоненты нет или / и не все зарегистрированы правильно. Чтобы решить это, попробуйте снизить все варианты внутри панели управления -> Включите функции Windows ON или OFF -> Информационные услуги Windows -> World Wide Web Services -> Функции разработки приложений, снимите флажок все варианты и перепроверьте Проверьте, решена ли проблема.

enter image description here

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top