MVC & WebAPI "Найдено несколько типов, соответствующих контроллеру с именем ..." - PullRequest
0 голосов
/ 13 мая 2019

У меня проблема маршрутизации с контроллерами MVC и WebAPI.

Ошибка:

Обнаружено несколько типов, соответствующих контроллеру с именем 'Log'.Это может произойти, если маршрут, обслуживающий этот запрос ('api / {controller} / {action} / {id}'), обнаружил несколько контроллеров, определенных с одинаковым именем, но с разными пространствами имен, что не поддерживается.Запрос 'Log' обнаружил следующие подходящие контроллеры: MyNamespace.Controllers.LogController MyNamespace.Controllers.WebAPI.LogController

Моя маршрутизация проста:

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

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

У меня естьпопытался добавить дополнительный маршрут для WebAPI, например:

routes.MapHttpRoute(
    name: "API",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

Наряду с добавлением пространства имен для маршрута MVC:

namespaces: new[] { "MyNamespace.Controllers" }

Но я все еще получаю ту же ошибку.Я не вижу способа указать пространство имен для маршрута WebAPI.

Существует хорошо поддержанный дубликат , но это конкретно касается контроллеров MVC.Ответы говорят о добавлении пространства имен, как указано выше, что здесь не помогло.В моем случае маршрутизация на контроллер MVC работает нормально, и проблема возникает только с контроллером WebAPI.

Странно то, что все остальные мои контроллеры WebAPI имеют то же имя, что и контроллеры MVC, но этоединственный, где я сталкиваюсь с ошибкой.

...