WebApi actionmethod与字符串参数notFound

时间:2017-06-23 13:12:25

标签: asp.net-web-api asp.net-mvc-routing

我的控制器中有两个Get方法,其中一个有两个字符串参数,第二个有一个字符串参数但是,当我用一个字符串参数调用方法时,它返回404,而带有两个字符串参数的方法有效精细。我想我的路由有问题。

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 }
            );

控制器:

[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
        }

1 个答案:

答案 0 :(得分:0)

您可以尝试使用属性路由吗?比如,在您的验证方法添加属性

之上
[Route("api/<controllername>/Validate")]

在打电话时你可以像

一样打电话
http://<localhost>:<port>/api/<controllername>/validate?id=123

希望这会有所帮助