Q:

WebApi actionmethod with string parameter notFound

I have two Get methods in my controller one of them with two string parameters and the second one has one string parameter but, when I make a call to method with one string parameter it returns 404, while method with two string parameters works fine. I think I have problems with my routing.
RouteConfig.cs:
routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
            routes.MapHttpRoute("Login", "api/{controller}/{email}/{password}",
                                new
                                {
                                    email = UrlParameter.Optional,
                                    password = UrlParameter.Optional
                                });

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

Controller:
[HttpGet]
        public IHttpActionResult Validate(string id)
        {
           //Some code here // doesn't work
        }

        [HttpGet]
        public IHttpActionResult GetCitizen(string email, string password)
        {
            //Some code here //works fine
        }

A:

Can you try with attribute Routing? Like, just above your Validate Method add attribute
[Route("api/<controllername>/Validate")]

and while calling you can call like 
http://<localhost>:<port>/api/<controllername>/validate?id=123

hope  this helps

