【问题标题】:MapHttpRoute going to wrong controller methodMapHttpRoute 去错误的控制器方法
【发布时间】:2015-02-03 20:27:58
【问题描述】:

您好,我有 2 个不带参数的 GET 方法和一个带字符串参数的方法,当我将字符串添加到 Query args 时,我希望它转到第二个 GET,但它转到第一个。

(我是 C# 新手,所以请温柔一点!)

控制器:

// GET api/clientwithclocksites
        public IEnumerable<ClientWithWorkSites> Get()
        {
            return this.clientRepository.GetClientsWithClockSites();
        }

        // GET api/clientwithclocksites/TEST
        public ClientWithWorkSites Get(String clientCode)
        {
            return this.clientRepository.GetClientsWithClockSites(clientCode);
        }

WebAPIConfig.cs:

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

尝试网址:

http://localhost:35790/api/clientwithclocksites/TEST

所需方法:

public ClientWithWorkSites Get(String clientCode)

实际方法:

public IEnumerable<ClientWithWorkSites> Get()

【问题讨论】:

    标签: c# .net asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    我自己想通了。只需要将路由参数参数变量名从id更改为匹配方法参数名clientCode

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

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多