问题描述: 在ApiController中使用了ActionNameAttribute来指定Action的名称,但是Attribute没有起作用。
解决方法:
using System.Web.Http;
public class MyApiController : ApiController
{
// ...
}
[HttpGet]
[ActionName("GetById")]
public IHttpActionResult Get(int id)
{
// ...
}
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这里的{controller}会自动匹配ApiController的名称。
[RoutePrefix("api/my")]
public class MyApiController : ApiController
{
// ...
}
路由配置需要指定相应的路由前缀。
如果使用了多个ActionNameAttribute,则只有最后一个会起作用。确保只使用一个ActionNameAttribute。
如果以上方法都没有解决问题,可以尝试重新构建解决方案或清理并重新生成解决方案。