如何在ASP.Net中路由Overidden Get方法

问题描述 投票:0回答:1

有一个TaskController:ApiController其中包含2个[[Get方法

public string Get(string cNumber){...} public string Get(string task, string eNumber, string cNumber){...}
通过defualt进行配置

public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Formatters.JsonFormatter.SupportedMediaTypes .Add(new MediaTypeHeaderValue("text/html")); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
第一个

GET

应该像]一样被调用>http://localhost:50159/api/task?cnumber=123456
第二个

GET

应该这样称呼>>http://localhost:50159/api/task?enumber=42&cnumber=123456
问题是,总是第一个

GET

被调用。有人可以解释一下为什么以及如何解决吗?
P.s。这基本上是我第一次使用asp.net MVC,因此请记住这一事实,当您回答或问我其他问题时。

有一个TaskController:ApiController,其中包含2个Get方法公共字符串Get(字符串cNumber){...}公共字符串Get(字符串任务,字符串eNumber,字符串cNumber){...}配置依据...] >

尝试这样,它将解决您的问题

[HttpGet("cnumber")] public string Get(string cNumber){...} [HttpGet("eNumber")] public string Get(string task, string eNumber, string cNumber){...}

并且在从邮递员处调用该api时分别使用api / Task / cnumber和api / Task / enumber。

通过这种方式,您可以创建任意数量的get()方法。

只需按照上面的代码提供到达该get()方法的路由

asp.net asp.net-mvc asp.net-web-api routing routes
1个回答
0
投票
尝试这样,它将解决您的问题
© www.soinside.com 2019 - 2024. All rights reserved.