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

Mono MVC5 - Просмотры не работает

Я пытаюсь запустить веб-сайт MVC5 на своем ящике Linux с помощью Mono и XSP4. Он работает без представлений, но когда я пытаюсь сделать что-то, он дает мне ошибки.

Вот мой тестовый код. Обратите внимание, что я ничего не менял, это в основном пустой сайт без EF или других библиотек. Просто голова MVC5 + Razor.

public ActionResult Index()
{
    // return Content("'sall good"); // works
    return View();
}

System.InvalidOperationException

Не удалось найти хост Razor Factoryтип: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Версия = 5.0.0.0, Культура = нейтральная, PublicKeyToken = 31BF3856AD364E35

Описание: запрос HTTP 500.Error.

Подробности: исключение из Интернета. Исходное происхождение (имя приложения или объекта): System.Web.WebPages.Razor.

StackTrace

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.

Есть ли надежда?

4b9b3361

Ответ 1

Проблема находится в 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" />.

Ответ 2

Версия 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 вы используете в своем проекте, перейдите в Project → Edit reference → then on the right side, в разделе "Выбранные ссылки" прокрутите вниз до System.Web.Mvc, где следует посмотрите, какую версию вы используете. Вот как я узнал в сообществе Xamarin Studio.

Ответ 3

Эта работа для меня. Я изменил 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.

Ответ 4

Это точно так же, как говорит Стэн. Проверьте свою версию System.Web.MVC правой кнопкой мыши > Свойства "в своей справочной папке (в вашем проекте). Затем обновите эту строку в /views/web.config.