Подтвердить что ты не робот

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) в базовых настройках приложения пула приложения (4.5) приложения? На данный момент у меня только 2.0 и 4.0, поскольку 4.5 похож на 3.5, которые добавляются только в рамки 4.0, я думаю, это нормально.

Когда я просматриваю домашнюю страницу, я получил следующую ошибку:

403 - Запрещено: доступ запрещен. У вас нет разрешения на просмотр этого каталога или страницы, используя предоставленные вами учетные данные.

Когда я запрашиваю единственный контроллер с именем Page/page/index, я получаю страницу 404, не найденную. Как и процесс ASP.NET, никогда не получите HTTP-запрос.

Я могу запросить простую HTML-страницу.

Пул приложений установлен в .NET 4.0 и интегрирован как режим управляемого конвейера.

NETWORK SERVICE имеет доступ для чтения/записи в каталог.

Приложение работает безупречно от VS2012, конечно.

Я не знаю, что здесь не так, и поисковые запросы не помогают.

Есть ли у кого-нибудь намек, который будет чрезвычайно оценен. Благодаря

Edit

DLL файлы уже находятся в папке bin, например System.Web.Mvc, System.Web.Razor и т.д.

Я создал пустую страницу test.aspx, чтобы убедиться, что рабочий процесс asp.net получил запрос, и да, страница была в порядке. Таким образом, похоже, что маршрутизация MVC не работает, хотя у меня есть веб-приложение ASP.NET MVC 3, работающее нормально на этом сервере.

После установки .NET 4.5 я сделал aspnet_regiis -iru в случае, добавив в приложение папку aspnet_client, но все же это не устраняет проблему.

Анонимная аутентификация включена в разделе проверки подлинности IIS, а показ авторизации разрешает всем пользователям.

ASP.NET MVC 4 установлен, я просто сделал ремонт, чтобы убедиться.

Несмотря на то, что ASP.NET MVC 4 установлен, ошибка 404, запрашивающая действие /page/index, возвращается стандартным IIS, а не стандартной ошибкой aspnet. И действительно, похоже, что структура MVC 4 не установлена ​​должным образом, я просто дважды проверю и сделаю ремонт. Где я могу продолжить расследование?

@Mystere Man, я изменил анонимную аутентификацию, чтобы использовать идентификатор пула приложений, остановить, запустить приложение и по-прежнему ту же ошибку. Это действительно выглядит, если ASP.NET MVC 4 не принимает запрос.

Вот часть web.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.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_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 в качестве принятого ответа, потому что он действительно решил проблему. Но я не собирался использовать это в производстве. Я спрашиваю, почему я должен был это сделать, и у меня не было никаких ответов.

Than Ответ Martin Hollingsworth был действительно тем, что я искал, хорошим способом решить эту проблему без всех проблем с производительностью, связанных с runAllManagedModulesForAllRequests.

Мы почти сдались и купили новый сервер Windows 2012 (из которого работает приложение ASP.NET MVC, как есть). После попытки решения Martin работал сервер Windows 2008.

4b9b3361

Ответ 1

Если вы не можете применить QFE от kb 980368, вместо использования решения runAllManagedModulesForAllRequests, как предложено в принятом , вы должны использовать конфигурацию модулей с preCondition = ", показанную ниже, чтобы избежать негативного воздействия на статический контент, как описано в сообщениях блога Как работает asp.NET MVC Routing и ее влияние на выполнение статических запросов и Не использовать runAllManagedModulesForAllRequests =" true "при получении вашей маршрутизации MVC и некоторых комментариев к ответам.

Сообщение блога Скотта Ханзельмана о runAllManagedModulesForAllRequests должно добавить некоторый вес к этому аргументу. сообщение Рик Страль Предостережения с runAllManagedModulesForAllRequests в IIS 7/8 - лучшее объяснение взаимодействия между найденными мной настройками. Документация IIS на модуль preCondition атрибут также стоит прочитать.

Помните, что это изменение конфигурации не требуется, если вы применили QFE, поскольку это поведение становится стандартным.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

Ответ 2

Попробуйте использовать это:

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

EDIT:

Решение выше будет работать для .NET 3.5 или ниже. Если вы используете .NET 4.0 или выше, вы можете попробовать установить IIS7 QFE

Кроме того, эта статья стоит прочитать, чтобы понять разницу между этими двумя.

Ответ 3

У меня была аналогичная проблема. Я пробовал многие из описанных здесь решений (запись конфигурации Web.Config system.webServer и т.д.) Безрезультатно. В самом конце я обнаружил, что проблема была с моей конкретной установкой. Я публиковал свой сайт в локальной файловой системе, а затем копировал эти файлы на сервер. Оказалось, что файл Global.asax не был частью опубликованных файлов. Как только я скопировал этот файл, ошибка исчезла.

Ответ 5

Как упоминалось в SonicTheLichen, если вы публикуете в Visual Studio, файл gloabal.asax по умолчанию не копируется. Скопировав global.asax на ваш веб-сервер, вы должны решить проблему. Спасибо SonicTheLichen за подтверждение решения.

С уважением, Саурабх

Ответ 6

Я не знаю, устранит ли это проблему, но она исправила одно приложение, которое я установил, и приложение MVC для IIS.

Мне пришлось добавить карту приложения подстановочного знака в файл aspnet_isapi.dll для домашнего/виртуального каталога приложения. Вы можете сделать это, щелкнув правой кнопкой мыши на веб-сайте/виртуальном каталоге и выбрав вкладку "Домашний каталог/виртуальный каталог", нажав кнопку конфигурации, а затем нажмите кнопку "Вставить" в разделе "Карты подстановочных знаков".

C:\WINDOWS\microsoft.net\Framework64\v4.0.30319\aspnet_isapi.dll

Удачи!

Ответ 7

У меня была аналогичная проблема. Мне пришлось развернуть сайт .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 и MVC 4.0
2) Установите .Net Framework 4.0
3) Установите .Net framework 4.5.1
4) Установите MVC 4.0

Ответ 8

Я знаю, что это старо, но обновления для Windows просто теряют пару часов для меня:

ЕСЛИ вы обрабатываете свои исключения в Global.asax, это также может быть простым, так как сохранение оконных обновлений так же, как ваш dev env... Для меня я не был уверен, что это привело к тому, что "невозможно загрузить..." исключение, которое мой global.asax пытался обработать и, в свою очередь, имел ту же проблему, но скрывал основную проблему.....

Ответ 9

Мне пришлось включить скрипты в разделе "Обработчик обработок" свойств веб-сайта в IIS.

Отображения обработчиков

Откройте IIS, щелкните соответствующий веб-сайт. Откройте "Обработчики обработчиков" и нажмите "Изменить права доступа". Установите флажки для Script и "Выполнить", затем нажмите "ОК". Хорошо идти!