我正在使用System.Web.Http.RouteAttribute和System.Web.Http.RoutePrefixAttribute来为我的Web API 2应用程序启用更干净的URL。 对于我的大部分请求,我可以使用路由(例如Controller/param1/param2 )或者我可以使用查询string(例如Controller?param1=bob¶m2=mary )。 不幸的是,我的一个控制器(也只有一个)失败了。 这是我的控制器: [RoutePrefix("1/Names")] public class NamesController : ApiController { [HttpGet] [Route("{name}/{sport}/{drink}")] public List<int> Get(string name, string sport, string drink) { // Code removed… } [HttpGet] [Route("{name}/{drink}")] public List<int> Get(string name, string drink) { // Code removed… } } 当我请求使用路由时,两者都正常工作。 但是,如果我使用查询string,它会失败,告诉我,该path不存在。 我已经尝试添加以下内容到我的WebApiConfig.cs类的Register(HttpConfiguration config)函数(在Default路由之前和之后),但它什么也没做: config.Routes.MapHttpRoute( name: "NameRoute", routeTemplate: "{verId}/Names/{name}/{sport}/{drink}", defaults: new […]
我正在尝试使用Web API 2属性路由来设置自定义API。 我有我的路线工作,以便我的函数被调用,但出于某种原因,我需要传递我的第一个参数,一切工作正常。 以下是我想要支持的url: http://mysite/api/servicename/parameter1 http://mysite/api/servicename/parameter1?parameter2=value2 http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3 http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3&p4=v4 最后3个URL可以工作,但是第一个URL说:“在控制器的控制器名称上找不到与请求匹配的操作”。 我的控制器看起来像这样: public class MyServiceController : ApiController { [Route("api/servicename/{parameter1}")] [HttpGet] public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "") { // process } }