Asp.net mvc MVC URL指向错误的Web API控制器

Asp.net mvc MVC URL指向错误的Web API控制器,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我对mvc很陌生 //localhost:51525/api/products/GetPromotionTypes 我得到的控制器如下 public IEnumerable<Product> GetAll() { return Utility.GetDiscountItems(); } public Product GetProduct(string Id) { return Utility.GetProduct(Id

我对mvc很陌生

//localhost:51525/api/products/GetPromotionTypes

我得到的控制器如下

public IEnumerable<Product> GetAll()
    {
        return Utility.GetDiscountItems();
    }

    public Product GetProduct(string Id)
    {
        return Utility.GetProduct(Id);
    }
    public String PostBag(Bag bagofItem)
    {
        return Utility.PostBagDiscountedItem(bagofItem);
    }
    public List<PromotionType> GetPromotionTypes()
     {
         return Utility.GetPromotionTypes();
     }
public IEnumerable GetAll()
{
return实用工具.GetDiscountItems();
}
公共产品GetProduct(字符串Id)
{
返回实用程序.GetProduct(Id);
}
公共字符串邮袋(Bag BagoItem)
{
返回实用程序.postBagDescentedItem(BagoItem);
}
公共列表GetPromotionTypes()
{
返回实用程序.GetPromotionTypes();
}
当我从上面的uri调用时,它指向控制器GetProduc(),但我希望它调用GetPromotionTypes()

我做错了什么
感谢您的帮助

如果这是一个WebAPI控制器,那么每个控制器只能有一个GET方法

WebAPI被设计为每个实体类型只有5个调用,GET(一个项/列表项)、POST、PUT和DELETE。这允许REST URL,例如Folders/Get/5、Folders/Get等

您应该为
PromotionType
添加另一个API控制器


在这里浏览一下本教程

您没有正确设置
路由
。我想它会将您的调用视为一个带有
GetPromotionTypes
参数的简单
GET
请求。

这是一个WebAPIController?您的控制器的名称是什么,它是api,产品是一个“动作”?只要给我们看一下你的控制器代码,你的路线,我们就能更好地帮助你。我很确定这确实是WebAPI(
/api/products/
)很好的捕获。@DimitarDimitrov谢谢!:)是的,我注意到了url中的
/api/
。特别是,我要指出。我还要注意的是,您可以有多个GET操作,但参数不同-因此您可以有5个以上。@Kobi是的,有多个GET操作,但只针对一种实体类型。