【问题标题】:web api calls routing to wrong methodweb api调用路由到错误的方法
【发布时间】:2013-04-08 17:56:35
【问题描述】:

我有一个 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 中达到了相同的断点。我检查了提琴手,它肯定调用了正确的网址。

【问题讨论】:

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


    【解决方案1】:

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

    VehicleController/GetRanges?manufacturer_code=AB
    

    VehicleController/GetRanges?manufacturerCode=AB
    

    无需调整相应的webapi方法。起初我怀疑这是一些奇怪的路由问题,但事实证明,因为参数名称不再包含它识别的任何内容,它解析为唯一不需要任何参数的方法,这是有道理的,但让我摸不着头脑一会儿!

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2018-09-17
      • 2021-09-12
      • 1970-01-01
      • 2019-03-30
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      相关资源
      最近更新 更多