Ошибка 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>
Ответы
Ответ 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
- Внутри вашего веб-проекта откройте узел дерева "Ссылки".
- Найдите папку "Сборки" и откройте ее.
- Найдите 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"/>
Надеюсь, поможет!