Проблемы с областями MVC4 (уже в наборе маршрутов)

Маршрут с именем "Home_default2" уже находится в коллекции маршрутов. Имена маршрутов должны быть уникальными.

    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        AreaRegistration.RegisterAllAreas();
        routes.MapRoute(
            name: "Default",
            url: "area/{controller}/{action}/{id}",
            defaults: new {area="Home_Default", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }


        public override string AreaName
    {
        get
        {
            return "Home";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Home_default2",
            "Home/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

Авто сгенерированный код глючит, что я сделал не так?

3 ответа

Решение

Чтобы решить эту проблему, просто удалите все .dll files в папке bin, а затем снова создайте решение. Это должно решить проблему для вас.

Проблема в дублировании `AreaRegistration.RegisterAllAreas(); на маршруте и на global.asax

так нужно только это

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

Изменение Home_Default на Home.

В моем случае я создал область и добавил эту строку в Route.config.

AreaRegistration.RegisterAllAreas();

Но это утверждение уже присутствовало в Application_start global.asax. следовательно получил ошибку.

Так что удалил его из route.config. Я не изменил название маршрута для него. одно имя маршрута было по умолчанию (в файле RouteConfig), а другое - areaname_default (в файле AreaRegistration.cs).

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