ASP.NET 4.5 MVC 4 не работает на Windows Server 2008 IIS 7
очевидно, я что-то упускаю, я не могу развернуть простой ASP.NET MVC 4, .NET 4.5 приложение на Windows Small Business Server 2008 на IIS 7.
установлена платформа .NET framework 4.5.
должен ли я видеть эту версию (4.5) в основных настройках пула приложений приложения? В это время у меня есть только 2.0 и 4.0, так как 4.5 похож на 3.5, которые только добавляют поверх 4.0 framework, я думаю, это нормально.
когда я просматриваю дома страница, я получил следующую ошибку:
403 - запрещено: Доступ запрещен. У вас нет разрешения на просмотр этого каталога или страницы с использованием предоставленных учетных данных.
когда я запрашиваю единственный контроллер с именем Page/page / index, я получаю страницу 404 not found. Как то: ASP.NET процесс никогда не получает http-запрос.
Я могу запросить простую HTML-страницу.
пул приложений имеет значение .NET 4.0 и интегрирован как управляемый конвейер режим.
сетевая служба имеет доступ для чтения / записи в каталог.
приложение работает безупречно с VS2012, конечно.
Я не знаю, что здесь не так, и поисковые запросы не очень помогают.
есть ли у кого-нибудь подсказка, которая была бы чрезвычайно признательна. Спасибо
Edit
библиотеки уже находятся в папке bin, как системы.Сеть.Mvc, System.Сеть.Бритва и т. д.
I создал пустой тест.aspx страница, чтобы убедиться asp.net рабочий процесс получал запрос, и да, страница была в порядке. Таким образом, похоже, что маршрутизация MVC не работает, хотя у меня есть ASP.NET веб-приложение MVC 3 отлично работает на этом сервере.
после установки .NET 4.5 я сделал aspnet_regiis-iru в случае, если он добавил папку aspnet_client в приложение, но все равно это не устраняет проблему.
анонимная проверка подлинности включена в разделе Проверка подлинности IIS, и Авторизация показать разрешить для всех пользователей.
ASP.NET MVC 4 установлен, я просто сделал ремонт, чтобы убедиться.
Eventhough the ASP.NET установлен MVC 4, ошибка 404 от запроса действия /page/index возвращается стандартным IIS, а не стандартной ошибкой aspnet. Так что действительно похоже, что фреймворк MVC 4 не установлен должным образом, я просто дважды проверяю и делаю ремонт. Где я могу продолжить расследование?
@Mystere человек, я изменил Анонимная проверка подлинности для использования удостоверения пула приложений, остановки, запуска приложения и все той же ошибки. Это действительно выглядит так, если ASP.NET MVC 4 не принимает запрос.
здесь является частью веб.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
изменить 2012/09/27
Я повторно сопрягаю Microsoft Framework .NET 4.5 и восстанавливаю ASP.NET MVC 4, повторно развернуть простой ASP.NET MVC 4 приложение, и я все еще получаю то же самое поведение. Я не уверен, что делать дальше, поэтому я начал щедрость в надежде что кто-то может помочь мне найти проблему.
изменить 2014/01/31
когда я задал этот вопрос, я пометил runAllManagedModulesForAllRequests как принятый ответ, потому что он решил проблему. Но я, конечно, не собирался использовать это в производстве. Я спрашиваю, почему я должен был сделать это и не было никаких ответов.
чем Мартин Холлингсворт ответ был действительно то, что я искал, хороший способ решить эту проблему без проблемы с производительностью, связанные с runAllManagedModulesForAllRequests.
мы почти сдались и купили новый сервер Windows 2012 (из которого ASP.NET приложение MVC работает как есть). После попытки решения Мартина, сервер Windows 2008 работал.
9 ответов:
Если вы не применять QFE от КБ 980368, вместо runAllManagedModulesForAllRequests решение как предложено в принятом ответ, вы должны использовать конфигурацию модулей с условие="" показано ниже, чтобы избежать негативного влияния на статический контент, как описано в блогах как asp.NET маршрутизация MVC работает и ее влияние на производительность статических запросов и не используйте runAllManagedModulesForAllRequests= "true" при получении маршрутизации MVC для работы и некоторые комментарии к ответам.
Скотта Хансельмана о runAllManagedModulesForAllRequests должны добавить некоторый вес к этому аргументу. Рик Штраль-х post предостережения с runAllManagedModulesForAllRequests в IIS 7/8 - это лучшее объяснение взаимодействия между настройками я не нашел. Этот Документация IIS на атрибут предварительного условия модуля также стоит прочитать.
помните, что это изменение конфигурации не требуется, если вы применили QFE, поскольку это поведение становится по умолчанию.
<system.webServer> <modules> <remove name="UrlRoutingModule-4.0" /> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> </modules> </system.webServer>
попробуйте использовать этот:
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> ... </system.webServer>
EDIT:
решение выше будет работать для .NET 3.5 или ниже. Если вы используете .NET 4.0 или выше, вы можете попробовать установка IIS7 QFE
и в этой статье стоит прочесть, чтобы понять разницу между этими двумя.
У меня была похожая проблема. Я пробовал многие из решений, описанных здесь (в Интернете.Система настроек.запись конфигурации веб-сервера и т. д.) безрезультатно. В самом конце, я обнаружил, что проблема была с моей конкретной установки. Я публиковал свой сайт в локальной файловой системе, а затем копировал эти файлы на сервер. Оказалось, что файл Global.asax не был частью опубликованных файлов. Как только я скопировал этот файл, ошибка ушла.
по состоянию на https://stackoverflow.com/a/12521807/695829
У меня была та же проблема, и это исправление исправило ее::http://support.microsoft.com/kb/980368
Как упоминалось SonicTheLichen, если вы публикуете из Visual studio, то gloabal.файл asax по умолчанию не копируется. Путем копирования глобального.asax для вашего веб-сервера должен решить эту проблему. Спасибо SonicTheLichen за доказательство решения.
с уважением, Саураб
Я не знаю, исправит ли это вашу проблему, но она исправила то, что у меня было развертывание и приложение MVC для IIS.
Мне пришлось добавить карту подстановочных приложений в aspnet_isapi.DLL для домашнего виртуального каталога/приложения. Вы можете сделать это, щелкнув правой кнопкой мыши на веб-сайте виртуальный каталог и выбрав вкладку домашний каталог/виртуальный каталог, нажав кнопку Настройка, а затем нажмите кнопку Вставить под сопоставлений раздел.
C:\WINDOWS\microsoft.net\Framework64\v4.0.30319\aspnet_isapi.dll
удачи!
У меня была похожая проблема. Мне пришлось развернуть сайт .net MVC на новый сервер с установленными Windows 2008 и IIS 7.5. Когда я проверил программы и функции, я увидел, что установлен только .Net Framework 4.5.1. Я вручную включил функцию .Net 3.5.1 Windows. После установки MVC 4.0 маршрутизация не работала.
мое решение:
1) деинсталлируйте .NET 4.5.1 framework и MVC 4.0
2) Установите .Net Framework 4.0
3) Установите .Net framework 4.5.1
4) Установите MVC 4.0
Я знаю, что это старый, но обновления windows только сейчас потратили пару часов для меня:
Если вы обрабатываете свои исключения в глобальном масштабе.asax это также может быть просто, как сохранение обновлений windows так же, как ваш dev env... Для меня это было не очевидно, это привело к тому, что "не удалось загрузить...."исключение, которое мое глобальное.асакс попытался справиться и, в свою очередь, имел ту же проблему, но скрывал основную проблему.....
Мне пришлось включить скрипты в разделе сопоставления обработчиков свойств веб-сайта в IIS.
откройте IIS, нажмите на соответствующий веб-сайт. Откройте "сопоставления обработчиков" и нажмите кнопку "Редактировать разрешения". Установите флажки для сценария и выполнить, а затем нажмите кнопку ОК. Хорошо идти!