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

Ошибка Razor Host Factory

Я получаю ошибку MvcWebRazorHostFactory, пытающуюся запустить мое приложение, но это вовсе не приложение MVC. У меня есть следующие веб-пакеты, установленные через nuget:

Microsoft ASP.NET Razor
Microsoft ASP.NET Web API 2.1
Microsoft ASP.NET Web Pages

Мое приложение является угловым фронтом, используя вид бритвы (.cshtml). Я не понимаю, почему я продолжаю получать эту ошибку.

An exception of type 'System.InvalidOperationException' occurred in System.Web.WebPages.Razor.dll but was not handled in user code

Additional information: Could not locate Razor Host Factory type: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35

И вот раздел бритвы в моем web.config:

<system.web.webPages.razor>
<host factoryType="System.Web.WebPages.Razor.WebRazorHostFactory, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.WebPages.WebPage">
  <namespaces>
    <add namespace="System.Web.Configuration" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>

4b9b3361

Ответ 1

Я решил эту проблему, установив System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc версии на 5.2.0.0 и это, наконец, сработало! Почему 5.2.0.0? Та же версия, что и у проекта NuGet Microsoft ASP.NET.

Итак, строка в /Views/Web.Config должна быть:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Ответ 2

В интересах любого, кто разрабатывает веб-приложения ASP.NET MVC 5 с использованием Xamarin Studio v5.5.3 на OSX, удаление /Views/Web.config не помогло мне и создало другие ошибки.

Чтобы исправить это, откройте /Views/Web.config и измените все экземпляры с 5.2.0.0 на 5.2. 2.0

Подробнее здесь

Ответ 3

Некоторые из ответов указывают в правильном направлении, но я не был уверен, где в интерфейсе Microsoft Visual Studio для Mac я мог найти подходящий номер версии для использования в части factoryType атрибута factoryType.

В интересах других пользователей VS для Mac ответ заключается в том, чтобы просто щелкнуть правой кнопкой мыши пакет Microsoft.AspNet.Mvc в списке пакетов в обозревателе решений.

version number display

В моем случае версия пакета была "5.2.6" после обновления пакета, поэтому я установил часть factoryType атрибута factoryType в Version=5.2.6.0. Это решило проблему.

Ответ 4

Поэтому, по-видимому, какой-то пакет, который я получил от nuget, добавляет web.config в папку Views. В этом web.config были настройки для MvcWebRazorHostFactory. Я думаю, что это произошло, когда я добавил проект в свой проект с помощью диалогового окна.

Решение состоит в том, чтобы удалить web.config из папки Views.

Ответ 5

Изменил версию MvcWebRazorHostFactory на ту же версию System.Web.Mvc, которая решила мою проблему.

Ответ 6

Я начал получать эту ошибку на моих страницах Razor.cshtml в проекте MVC после некоторого управления/обновления пакета NuGet.

Я не хотел полностью удалять файл Web.config из папки Views, потому что я настроил его ширину на некоторые элементы <add namespace="..." />. Но я заметил, что Version =... в <host factoryType="..." /> не соответствует моей версии System.Web.Mvc (проверенная версия в обозревателе объектов).

Изменив этот номер версии в соответствии с моей сборкой System.Web.Mvc и перезапустив Visual Studio, исправил проблему для меня (как предложено Daniel)

Ответ 7

Это случилось со мной сегодня. Я просто убедился, что номер версии для web.config в папке представлений совпадает с номером версии для web.config решения.

Надеюсь это поможет.

Ответ 8

  1. Внутри вашего веб-проекта откройте узел дерева "Ссылки".
    1. Найдите папку "Сборки" и откройте ее.
    2. Найдите System.Web.Mvc, щелкните по нему правой кнопкой мыши и выберите "Свойства".

Появится диалоговое окно, внимательно прочитайте поле full name пакета и найдите номер версии. Например, у меня есть этот:

System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Итак, в файле Web.config(внутри папки Views) замените номер версии!

В моем случае изначально это было:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Теперь у меня есть (посмотрите на значение версии):

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Надеюсь, поможет!