.net 4.0 - ASP.NET MVC на IIS 7.5




.net-4.0 iis-7.5 (19)

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

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)

Я использую 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» в своем списке модулей

Есть ли еще какие-то шаги, которые я забыл предпринять, чтобы заставить это работать?

Примечания. После установки VS 2010 RC я установил IIS 7.5. Я использовал встроенную кнопку «Создать виртуальный каталог» на вкладке «Веб» в «Свойствах» проекта MVC в Visual Studio 2010. Я убедился, что приложение использует пул приложений ASP.NET 4.

Ниже приведены установленные IIS IIS.


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


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

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

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


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

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


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

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

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

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


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


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


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

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

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

aspnet_regiis.exe /i

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

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


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


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

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

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


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


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

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

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

<remove name="WindowsAuthentication" />

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

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


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

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

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


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

Я поднял этот вопрос в качестве дискуссии на дискуссионном совете в проекте cloud cloud codeplex.

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


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

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


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


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






iis-7.5