C# 为什么MapHttpAttributeRoutes()不从属性添加路由?

C# 为什么MapHttpAttributeRoutes()不从属性添加路由?,c#,routes,asp.net-web-api2,C#,Routes,Asp.net Web Api2,我有几个自己的控制器,路由基本上是由属性组成的。问题是,当我用Postman模拟http请求时,程序似乎不知道提供的路由 我的控制器如下所示: [RoutePrefix(“寄存器”)] 公共类注册控制器:ApiController { 专用只读IRegisterService\u服务; 公共注册控制器(IRegisterService服务) { _服务=服务; } [HttpPost] [路线(“简单”)] 公共无效注册表示例(注册表args args) { _service.RegisterS

我有几个自己的控制器,路由基本上是由属性组成的。问题是,当我用Postman模拟http请求时,程序似乎不知道提供的路由

我的控制器如下所示:

[RoutePrefix(“寄存器”)]
公共类注册控制器:ApiController
{
专用只读IRegisterService\u服务;
公共注册控制器(IRegisterService服务)
{
_服务=服务;
}
[HttpPost]
[路线(“简单”)]
公共无效注册表示例(注册表args args)
{
_service.RegisterSimple(args);
}
}
请注意,Global.asax.cs调用了与Web Api 2兼容的配置:

公共类WebAPI应用程序:System.Web.HttpApplication
{
受保护的无效应用程序\u Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
//直接投资注册
}
}
。。。WebApiConfig调用MapHttpAttribute路由():

公共静态类WebApiConfig
{
公共静态无效寄存器(HttpConfiguration配置)
{
//Web API配置和服务
//Web API路由
config.maphttpAttribute路由();
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
}
}
当我尝试用uri从Postman调用POST方法时

http://localhost:63575/api/register/simple
我得到以下答案:

{
    "Message": "No HTTP resource was found that matches the request URI 'http://localhost:63575/api/register/simple'.",
    "MessageDetail": "No action was found on the controller 'Register' that matches the request."
}
我相信问题出在路由配置中。我调试了它,在两个方法调用(config.maphttpAttribute()和config.Routes.MapHttpRoute)之后,配置只有两个路由:一个路由为空RouteTemplate(“”),另一个路由为从MappHttpRoute()调用(“api/{controller}/{id}”)提供的路由。
我的问题是-如何通过属性正确配置路由?

控制器级路由前缀应以“api”开头,如下所示:

[RoutePrefix("api/register")]
public class RegisterController : ApiController