查询字符串的属性路由

时间:2018-05-14 11:51:18

标签: c# .net asp.net-web-api asp.net-web-api-routing

我有以下路线网址: -

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

但在申请上述网址后: -

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

无法找到该网址

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

2 个答案:

答案 0 :(得分:3)

您需要稍微修改路由,因为查询字符串通常不在属性路由中使用。它们倾向于用于内联路由参数。

print(output_layer.name)

另外

  

启用属性路由

     

要启用属性路由,请在配置期间调用[RoutePrefix("subroute")] public class HomeController : ApiController { //Matches GET subroute/GetInfo?param1=somestring&param2=somestring [HttpGet] [Route("GetInfo")] public IHttpActionResult GetInfo(string param1, string param2) { //... } } 。这种扩展方法是   在MapHttpAttributeRoutes类中定义。

System.Web.Http.HttpConfigurationExtensions

参考Attribute Routing in ASP.NET Web API 2

答案 1 :(得分: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