2014-01-31 3 views
2

Я создал очень простое приложение MVC 5.0, которое я нажимаю на репозиторий GitHub: https://github.com/marxin/mvc-sample. Моей мотивацией является выполнение приложения на Linux с моно 3.2.3.MVC5 Autofac: Вид не найден

Я хотел бы добавить пакет Autofac NuGet (точнее 3.3.0), который отлично подходит для меня. Проблема заключается в том, что если я добавить пакет интеграции Autofac.Mvc5, Razor перестает работать со следующей ошибкой:

System.InvalidOperationException 
The view found at '~/Views/Home/Index.cshtml' was not created. 

Description: HTTP 500.Error processing request. 

Details: Non-web exception. Exception origin (name of application or object): System.Web.Mvc. 
Exception stack trace: 
at System.Web.Mvc.BuildManagerCompiledView.Render (System.Web.Mvc.ViewContext viewContext, System.IO.TextWriter writer) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ViewResultBase.ExecuteResult (System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (IList`1 filters, Int32 filterIndex, System.Web.Mvc.ResultExecutingContext preContext, System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename unknown>:0 at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (IList`1 filters, Int32 filterIndex, System.Web.Mvc.ResultExecutingContext preContext, System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename unknown>:0 

Diff: https://github.com/marxin/mvc-sample/commit/ca980adcf1d67e2e74729b27b11c26065dd2567e

Не могли бы вы помочь мне, что необходимый минимум, который должен быть зарегистрирован для Autofac, чтобы включить Страницы просмотра Razor?

Если я попробую шаблон aspx, все работает нормально.

Спасибо, Мартин

+0

берегись, моно не совместим с MVC5 еще (но я парень реализовал недостающие части здесь: https://github.com/mono/mono/pull/862, так что вы можете помочь ему разделить патчи во многих запросах на тягу для легкого просмотра командой mono) – knocte

ответ

1

Вы должны зарегистрировать контейнер IoC для autofac. В вашей global.asax:

protected void Application_Start() 
{ 
    var builder = new ContainerBuilder(); 
    builder.RegisterControllers(typeof(MvcApplication).Assembly); 
    var container = builder.Build(); 
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 

    // Other MVC setup... 
} 
+0

Я добавил код, который вы указали: https://github.com/marxin/mvc-sample/blob/84c9b2aabee4df0c7c67ec7005e2ffb92fdf2293/Site/Global.asax.cs, но он не помогает. Я прочитал wiki-страницу MvcIntegration, которую можно найти в вики Autofac, но касается только Razor в вопросе инъекции. Мне просто нужно работать с Razor. – marxin

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