C# 从泛型控制器重写单个方法

C# 从泛型控制器重写单个方法,c#,generics,overriding,C#,Generics,Overriding,我有一个抽象类 public abstract class BaseController<T,K> : ApiController { //several methods [Route("{id:int}")] public HttpResponseMessage Put(int id, [FromBody]T item) { //updates the item } } 但它抛出错误:找到了多个与请求匹配的操作 如何重写该方法 ---编辑---- 这

我有一个抽象类

public abstract class BaseController<T,K> : ApiController
{
  //several methods

  [Route("{id:int}")]
  public HttpResponseMessage Put(int id, [FromBody]T item)
  {
    //updates the item
  }
}
但它抛出错误:
找到了多个与请求匹配的操作

如何重写该方法

---编辑---- 这是我的网页

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
---编辑---
添加了
[Route(“{id:int}”)]

将Route属性从覆盖中移除。即基于id:int路由和主体的数据类型生成两个相同的路由。由于多态性,重写仍将代替基本方法执行。

您确定路由正确吗?我怀疑您的路线没有正确指定控制器。已使用路线更新问题
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());

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