web api调用路由到错误的方法

时间:2013-04-16 10:50:20

标签: asp.net web-services asp.net-mvc-4 asp.net-web-api

我有一个webapi控制器违反了默认的webapi约定,以暴露一些不同的“get”方法

    [HttpGet]
    [WebAPIValidateAntiForgeryTokenAttribute]
    public Manufacturer[] GetManufacturers()
    {
        var profiler = MiniProfiler.Current; 
        using (profiler.Step("WCF Service Call: GetManufacturers"))
        {
            return IvService.GetManufacturers();
        }
    }

    [HttpGet]
    [WebAPIValidateAntiForgeryTokenAttribute]
    public Range[] GetRanges(string manufacturer_code)
    {
        var profiler = MiniProfiler.Current;
        using (profiler.Step("WCF Service Call: GetRanges"))
        {
            return IvService.GetRanges(manufacturerCode);
        }
    }

它们是非常简单的方法,从Javascript调用并通过WCF再次调用外部系统,然后返回结果。这已经在dev上工作了一段时间但最近停止了工作 - 从javascript到GetManufacturers和GetRanges的调用现在在GetManufacturers中达到了相同的断点。我检查了小提琴手,它肯定会调用正确的网址。

1 个答案:

答案 0 :(得分:3)

已经进行了一些重构以强制执行一些与参数名称相关的编码标准,并且来自javascript的调用已经调整为

VehicleController/GetRanges?manufacturer_code=AB

VehicleController/GetRanges?manufacturerCode=AB

不调整相应的webapi方法。起初我曾怀疑这是一些奇怪的路由问题,但事实证明,因为参数名称不再包含它识别的任何东西,它解决了唯一没有需要任何参数的方法,这是有道理但让我抓挠我的一会儿!