Как проложить методы Overidden Get в ASP.Net - PullRequest
0 голосов
/ 16 января 2020

существует TaskController: ApiController , который содержит 2 Get методов

public string Get(string cNumber){...}

public string Get(string task, string eNumber, string cNumber){...}

Конфигурации по умолчанию

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 называется. Может ли кто-нибудь объяснить мне, почему и как это исправить?

Ps это в основном первый раз, когда я работаю с asp. net MVC, поэтому запомните этот факт, пожалуйста, когда вы ответите или спросите меня дополнительные вопросы.

1 Ответ

0 голосов
/ 16 января 2020

попробуйте так, это решит вашу проблему

    [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 () согласно приведенному выше коду

...