查询字符串的属性路由

Attribute Routing for querystring

我有以下路线 URL:-

www.domanname.com/subroute/GetInfo?param1=somestring&param2=somestring

我在 webapi 中的功能为:-

public class HomeController : ApiController
{
    public object GetInfo(string param1,string param2)
    {}
}

申请路线:-

[RoutePrefix("subroute")]
public class HomeController : ApiController
{
    [Route("GetInfo?param1={param1:string}&param2={param2:string}")]
    public object GetInfo(string param1,string param2)
    {}
}

但是在URL上面申请之后:-

www.domanname.com/subroute/GetInfo?param1=somestring&param2=somestring

找不到 URL

我该如何设计这条特定的路线?

您需要稍微修改一下路由,因为查询字符串通常不用于属性路由。它们往往用于内联路由参数。

[RoutePrefix("subroute")]
public class HomeController : ApiController {
    //Matches GET subroute/GetInfo?param1=somestring&param2=somestring
    [HttpGet]
    [Route("GetInfo")]
    public IHttpActionResult GetInfo(string param1, string param2) {
        //...
    }
}

还有

Enabling Attribute Routing

To enable attribute routing, call MapHttpAttributeRoutes during configuration. This extension method is defined in the System.Web.Http.HttpConfigurationExtensions class.

using System.Web.Http;

namespace WebApplication
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API routes
            config.MapHttpAttributeRoutes();

            // Other Web API configuration not shown.
        }
    }
}

参考Attribute Routing in ASP.NET Web API 2

[RoutePrefix("subroute")]
public class HomeController : ApiController {
    [HttpGet]
    [Route("GetInfo/{param1}/{param2}")]
    public IHttpActionResult GetInfo(string param1, string param2) {
        //...
    }
}

通话中

//Matches GET subroute/GetInfo/Hello/World