2014-04-21 2 views
13

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

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

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

System.InvalidOperationException

Не удалось найти бритву HOST Factory Тип: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version = 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__() 

... 

Я попытался изменить Version = 5.0.0.0 на 4.0.0.0 и 3.0.0.0 т.д., но ничего не работает. Я все равно получаю ту же ошибку, что и сейчас, 4.0.0.0.

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

+0

Вы пытались: sudo apt-get install asp.net-examples –

+0

@DavidCrowell Нет, AFAIK они бессмысленны, потому что им 3+ года. Они показывают, как работает MVC2. Я получаю моно от git и компилирую из источников, поскольку официальный сайт отстает. И моно в репозиториях aptitude также является очень старой версией. – sed

+0

У вас есть log4net?TypeFactory (ссылка в WebRazorHost) использует log4net. –

ответ

20

Проблема в 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" />.

-1

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

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.

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 -> Редактировать ссылки -> затем на правой стороне, в разделе «Выбранные ссылки» прокрутите вниз до System.Web.Mvc где следует посмотреть, какую версию вы используете. Так я узнал об этом в сообществе Xamarin Studio.

Смежные вопросы