Как запустить NancyFX и Mvc5 с razor в одном приложении?

#c# #asp.net-mvc #razor #owin #nancy

#c# #asp.net-mvc #razor #owin #нэнси

Вопрос:

У меня есть рабочее приложение, основанное на NancyFX (1.4.3) и Owin. Теперь я хочу удалить NancyFX и заменить (постепенно) на Mvc5. Эти маленькие шаги позволяют мне перенести весь проект на asp.net ядро в будущем. 🙂

Я могу передавать указанные NancyFX пути к MVC. Моя конфигурация запуска Owin выглядит следующим образом:

 public void Configuration(IAppBuilder app)
{
    app
        .MapSignalR()
        .UseNancy(o =>
        {
            o.PerformPassThrough = ctx =>
            {
                return ctx.Request.Path.StartsWith("/test");
            };
        })
        .UseStageMarker(PipelineStage.MapHandler)
    ;
}
 

Благодаря этому я могу запускать свое приложение как обычно. Контроллер mvc будет обрабатывать только «тестовый» путь:

 public class TestController : Controller
{
    [Route("test")]
    public ActionResult Index()
    {
        return View();
    }
}
 

Моя основная проблема связана с Razor, который настроен следующим образом:
https://github.com/NancyFx/Nancy/wiki/Razor-View-Engine#letting-razor-know-what-base-type-your-views-use

и просмотр, отображаемый MVC, не удался, потому что:

 The view at '~/Views/Home/Index.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.
 

Как настроить и запускать представления из одной папки для MVC и второй папки для NancyFX?

Комментарии:

1. Не могли бы вы включить первые строки Index.cshtml в сообщение, пожалуйста? Вы пытались добавить @inherits System.Web.Mvc.WebViewPage в Index.cshtml ?

Ответ №1:

Страница просмотра должна быть унаследована от System.Web.Mvc.WebViewPage . Убедитесь, что Index.cshtml в него включена следующая строка:

 @inherits System.Web.Mvc.WebViewPage
 

В проекте также должна быть ссылка на System.Web.Mvc сборку.