MapHttpRoute转向错误的控制器方法

时间:2015-02-03 20:27:58

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

嗨我有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()

1 个答案:

答案 0 :(得分:0)

我自己想出来了。只需要从id更改路由参数参数变量名称以匹配方法参数名称clientCode

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