C#Web API2:使用整数参数的简单路由不起作用

时间:2015-04-10 10:20:16

标签: asp.net-web-api2

我有一个简单的控制器。我开始2个URL,一个是工作,第二个不是。我正在使用VS 2013 EXPRESS :)。

http://localhost:53416/api/payments/ - 工作并显示“1” http://localhost:53416/api/payments/2 - 不起作用并显示错误HTTP 错误404.0 - 未找到(未显示“2”)。

第二种行动方法有什么问题?

Controler的代码

[RoutePrefix("api/payments")]
    public class MvbePaymentController : ApiController
    {
        [Route("")]
        [HttpGet]
        public IHttpActionResult GetPayments()
        {                            
            return Ok("1");
        }    
        [Route("{id:int}")]
        [HttpGet]
        public IHttpActionResult GetPayments(int invoiceId)
        {                        
            return Ok("2");
        }    
    }

WebApiCOnfig:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {

            config.Filters.Add(new ValidateModelStateAttribute());                                             

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

1 个答案:

答案 0 :(得分:1)

我认为您的GetPayments代码应该包含名为 id 的参数,而不是 invoiceId

public IHttpActionResult GetPayments(int id)
    {                        
        return Ok("2");
    }