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.razorhost Параметр должен точно соответствовать версии 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.0Views/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,

Другие вопросы по тегам