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()在应用程序的启动代码中,在所有其他初始化代码之后调用。“