Mono MVC5 - представления не работают
Я пытаюсь запустить веб-сайт MVC5 на моем компьютере с Linux, используя Mono и XSP4. Это работает без представлений, однако, когда я пытаюсь сделать что-то, это дает мне ошибки.
Вот мой тестовый код. Обратите внимание, что я ничего не менял, это в основном пустой сайт без EF или каких-либо других библиотек. Просто голая MVC5 + бритва.
public ActionResult Index()
{
// return Content("'sall good"); // works
return View();
}
System.InvalidOperationException
Не удалось найти тип фабрики хостов Razor: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, версия =5.0.0.0, культура = нейтральная, PublicKeyToken=31BF3856AD364E35
Описание: HTTP 500. Запрос на обработку ошибки.
Подробности: исключение не в сети. Источник исключения (имя приложения или объекта): System.Web.WebPages.Razor.
Трассировки стека
at System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory (System.String typeName) [0x00000] in <filename unknown>:0
at System.Collections.Concurrent.ConcurrentDictionary`2+<GetOrAdd>c__AnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].<>m__0 () [0x00000] in <filename unknown>:0
at (wrapper delegate-invoke) System.Func`1<System.Collections.Generic.KeyValuePair`2<string, System.Func`1<System.Web.WebPages.Razor.WebRazorHostFactory>>>:invoke_TResult__this__ ()
...
Я пытался изменить версию = 5.0.0.0 на 4.0.0.0 и 3.0.0.0 и т. Д., Но ничего не работает. Я все еще получаю ту же ошибку только сейчас, это около 4.0.0.0.
Есть ли надежда?
6 ответов
Проблема в Web.config
это внутри /Views
папка. system.web.webPages.razor
host
Параметр должен точно соответствовать версии MVC.
Например, если у вас MVC 5.2.2.0, он должен выглядеть следующим образом <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
,
Версия MVC вашего проекта должна соответствовать версии MvcWebRazorHostFactory, она должна совпадать. Я должен был изменить версию на 5.2.3.0
(в Views/Web.config
файл).
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0
Если вы не знаете, какую версию MVC вы используете в своем проекте, перейдите в Проект -> Редактировать ссылки ->, затем справа, в разделе "Выбранные ссылки" прокрутите вниз до System.Web.Mvc
где должен видеть, какую версию вы используете. Так я узнал в сообществе Xamarin Studio.
Я получил ту же ошибку после того, как я обновил свои пакеты и запустил код.
Ошибка: System.InvalidOperationException Не удалось найти тип фабрики хостов Razor: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, версия =5.2.3.0, культура = нейтральная, PublicKeyToken=31BF3856AD364E35
Измените обновленную версию для System.Web.Mvc в файле Web.config в папке "Views"
system.web.webPages.razor
host factoryType = "System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, версия =5.2.7.0, культура = нейтральная, PublicKeyToken=31BF3856AD364E35"
Я изменил мою версию System.Web.Mvc с 5.2.3.0 до 5.2.7.0 и код был выполнен.
Это работа для меня. Я изменил Web.config в папке Views, версия Mvc как 5.2.3.0 в соответствии с моей версией Mvc. Например. <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Я изменил свою версию с 5.2.0.0 на 5.2.3.0.
Решение @stan помогло мне решить проблему.
Я использую Visual Studio на чипе Mac M1.
В моем случае я исправил следующие вещи в файле views / web.config
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
Обновите версии в соответствии с «Справочниками»> «Пакеты», проверьте версию и обновите ее.
Восстановить проект / решение
Это так же, как говорит Стэн. Проверьте свою версию System.Web.MVC
сделав "правый клик> Свойства" в вашей справочной папке (в вашем проекте). Затем обновите эту строку в вашем /views/web.config
,