【发布时间】:2018-06-20 15:07:25
【问题描述】:
我有一个方法定义如下
[Route("public/sites/GetAllForWeb")]
[HttpGet]
public IEnumerable<Domain.Site.Site> GetAllForWeb(DateTime date, int hour, string parameterCode = null)
然后被称为如下(角度)
return this.http.get<Site[]>("public/sites/GetAllForWeb?date=" + date + "&hour=" + hour + ((parameterCode === undefined) ? "" : "&parameterCode=" + parameterCode)
不幸的是,调用不匹配任何控制器方法,我假设是因为Route 属性中缺少参数。
应如何修改Route 属性以正确反映方法签名?
【问题讨论】:
-
该 url 的路由属性似乎是正确的。您在控制器上有 routePrefix 属性吗?是否启用了路由属性? (你在 webapi 配置中有 config.MapHttpAttributeRoutes(); 行吗?)
-
您是否尝试过这两个参数的 ([FromURI] DateTime date, int hour) 属性并将 /{date}/{hour} 放入 Route 属性中?
-
@J.Loscos 没有路由前缀,是的,该行在配置中。框架的路由属性中是否不需要属性以将请求与方法匹配?
-
在您的示例中,所有方法参数都是 http 请求参数,因为它们在“?”之后所以你不需要在路由属性中指出它们。
-
这就是我的想法……但它不起作用。还有其他想法吗?
标签: asp.net asp.net-web-api asp.net-web-api2