【发布时间】:2014-01-27 16:22:03
【问题描述】:
我有 2 个区域,其中有 2 个 API 控制器,它们具有相同的 AI 控制器名称,但不同的命名空间,并通过 2 个不同的 MapHttpRoute() 调用及其唯一名称和路由进行配置。他们也成功编译没有问题。但是,两者都有匹配的操作方法,当我调用其中一个时,我会返回以下异常。
从异常消息中可以清楚地看出它不受支持,但是否有一个优雅的解决方案,这样我就不必为我的 API 控制器命名,尽管它们位于不同的命名空间中?
例外:
找到了多个与名为的控制器匹配的类型 'SomethingApi'。如果服务于此的路由可能会发生这种情况 request ('route-one/api/something/{action}') 发现多个控制器 用相同的名称但不同的命名空间定义,这不是 支持。
路线示例:
public static void RegisterApiRoutes(HttpConfiguration config)
{
// URL: /route-one/api/something/
config.Routes.MapHttpRoute(
"RoutOne.Api.Something",
"route-one/api/something/{action}",
new { controller = "SomethingApi" }
);
}
两个命名空间中的路由都是从项目的 WebApiConfig 调用的:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
RouteOneAreaRegistration.RegisterApiRoutes(config);
RouteTwoAreaRegistration.RegisterApiRoutes(config);
}
}
【问题讨论】:
-
你能显示两个不同区域的路线注册吗?似乎 MVC 认为您正在注册两个区域/路线相同...
-
在哪里调用 RegisterApiRoutes()?
-
您是否尝试为 MapHttpRoute 指定区域名称?
-
@Jason - 我可以保证两条路线都是独一无二的,它们有唯一的名称和路线。
-
@KevinBrechbühl - 请参阅修正以获取您的答案
标签: c# asp.net-mvc