C# 管理不同命名空间中具有相同名称的多个控制器时出错

C# 管理不同命名空间中具有相同名称的多个控制器时出错,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,以下是我端定义的控制器: namespace Demo.Web.Controllers.Api.Admin { public class UserAuthenticationController : ApiController { [HttpPost, ActionName(ActionNameConstants.PostAdminLogin)] public IHttpActionResult PostAdminLogin(AdminLogin

以下是我端定义的控制器:

namespace Demo.Web.Controllers.Api.Admin
{
    public class UserAuthenticationController : ApiController
    {

        [HttpPost, ActionName(ActionNameConstants.PostAdminLogin)]
        public IHttpActionResult PostAdminLogin(AdminLoginModel adminLoginModel)
        {            
            return Ok(true);
        }
    }
}

现在,对于上述控制器,我们已按如下方式管理路由:

 public static void Register(HttpConfiguration config)
        {


            config.Routes.MapHttpRoute(
                name: "FrontApi",
                routeTemplate: "api/front/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.Routes.MapHttpRoute(
                name: "AdminApi",
                routeTemplate: "api/admin/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

        }
对于上述控制器和路由,我面临以下错误:

Multiple types were found that match the controller named 'userAuthentication'. 
This can happen if the route that services this request 
('api/admin/{controller}/{action}/{id}') found multiple controllers
defined with the same name but differing namespaces, which is not supported.
请告诉我您的意见。

更新

[Route(“api/admin”)]
添加到命名空间中的控制器
Demo.Web.Controllers.api.admin
[Route(“api/front”)]
添加到命名空间中的控制器
Demo.Web.Controllers.api.front
,并更改注册方法,如下所示:

namespace Demo.Web.Controllers.Api.Admin
{
    [Route("api/admin")]
    public class UserAuthenticationController : ApiController
    {

        [HttpPost,Route("login")]
        public IHttpActionResult PostAdminLogin([FromBody]AdminLoginModel adminLoginModel)
        {            
            return Ok(true);
        }
    }
}
public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
    var corsAttr = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(corsAttr);
}

将无效寄存器(HttpConfiguration config)更改为以下内容:

namespace Demo.Web.Controllers.Api.Admin
{
    [Route("api/admin")]
    public class UserAuthenticationController : ApiController
    {

        [HttpPost,Route("login")]
        public IHttpActionResult PostAdminLogin([FromBody]AdminLoginModel adminLoginModel)
        {            
            return Ok(true);
        }
    }
}
public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
    var corsAttr = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(corsAttr);
}

你能帮我告诉我把它放在控制器中的确切位置吗?@KunalKakkad也尝试更改你的寄存器函数,因为我已经添加到了答案中。收到这样的错误:“对象尚未初始化。请确保HttpConfiguration.EnsureInitialized()在应用程序的启动代码中,在所有其他初始化代码之后调用。“