Атрибуты маршрута для путаницы областей при публикации на хосте в asp.net mvc 5

Я использую атрибуты маршрута с областями.

Мой маршрут конфигурации:

public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "Peacock.Controllers" }
        );

        routes.MapRoute(
            "CMS",
            "CMS/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "CMS.Controllers" }
        );
}

На моем местном все вещи правильно! Сегодня, когда я опубликовал свой проект и загрузил его на свой хост, я столкнулся с двумя типами ошибок.

Если я запрашиваю URL Default MapRoute, как mysite.com/Contents/1060 все правильно! Но когда я запрашивал URL своей области, я сталкивался с ошибками типа буксира!

1) некоторые запросы вроде mysite.com/cms/comment или же mysite.com/cms/category имеет эту ошибку:

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Areas/CMS/Views/ContentCategory/Index.aspx
~/Areas/CMS/Views/ContentCategory/Index.ascx
~/Areas/CMS/Views/Shared/Index.aspx
~/Areas/CMS/Views/Shared/Index.ascx
~/Views/ContentCategory/Index.aspx
~/Views/ContentCategory/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Areas/CMS/Views/ContentCategory/Index.cshtml
~/Areas/CMS/Views/ContentCategory/Index.vbhtml
~/Areas/CMS/Views/Shared/Index.cshtml
~/Areas/CMS/Views/Shared/Index.vbhtml
~/Views/ContentCategory/Index.cshtml
~/Views/ContentCategory/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

но ~/Areas/CMS/Views/ContentCategory/Index.cshtml существует на моем хосте!

2) некоторые другие запросы, такие как mysite.com/cms/content или же mysite.com/cms/gallery имеет эту ошибку:

 The partial view '~/Content/templates///views/Gallery/index.cshtml' was not found or no view engine supports the searched locations. The following locations were searched:
 ~/Content/templates///views/Gallery/index.cshtml
 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: The partial view '~/Content/templates///views/Gallery/index.cshtml' was not found or no view engine supports the searched locations. The following locations were searched:
~/Content/templates///views/Gallery/index.cshtml

Source Error:


Line 3:      string view = "~/Content/templates/" + ViewBag.website + "/" + ViewBag.lang + "/views/Gallery/index.cshtml";
Line 4:      Html.RenderPartial(view);
Line 5:  }
Line 6:  

"Ошибка источника" этой ошибки показывает некоторый код моего проекта по умолчанию (не cms) представления galleryController! Я так растерялся.

Я еще раз подчеркиваю, что это просто происходит на хосте и в моей локальной системе, все правильно!

Также следует отметить, что эта ошибка произошла сегодня после очередной ошибки, вчера на моем хосте все было исправлено и этой ошибки не было до вчерашнего дня!

2 ответа

Решение

У меня такая же проблема! Я по ошибке переименовал папку "Области" в "Область" и столкнулся с этой ошибкой!

ошибка 2: происходит, когда у вас есть контроллер с тем же именем запрошенного контроллера в проекте по умолчанию!

ошибка 1: происходит, когда у вас нет контроллера с таким же именем запрошенного контроллера в проекте Default!

Удачи.

Я не знаю, если это ваша единственная проблема, но ваши маршруты указаны в неправильном порядке.

То, как вы настроили свою маршрутизацию, любые 2 или 3 сегмента URL, которые начинаются с CMS будет соответствовать Default маршрут, а не CMS маршрут. Возможно, что из-за этой проблемы ваши представления не найдены, потому что используется неправильное пространство имен (и, следовательно, вызывается неправильный контроллер). Чтобы это исправить, вы должны зарегистрировать CMS маршрут до Default,

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapMvcAttributeRoutes();

    routes.MapRoute(
        "CMS",
        "CMS/{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new[] { "CMS.Controllers" }
    );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new[] { "Peacock.Controllers" }
    );
}

Конечно, ошибка также может указывать на то, что вы не полностью развернули все свои представления на своем сервере.

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