我在Web 2中使用asp.net MVC 5,我正在测试新的属性路由,这看起来很简单。我遵循了msdn入门链接,但仍然无法获得一些非常简单的设置。
在API配置文件中:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}在api控制器中:
public class RecruitingController : ApiController
{
...snip...
[Route("Recruiting/countries/all/")]
[ResponseType(typeof(List<Country>))]
public async Task<IHttpActionResult> GetCountries()
{
var countries = ctx.Countries.ToList();
if (countries.Count == 0)
{
return NotFound();
}
return Ok(countries);
}
}在我看来,我是通过ajax调用路由。在工具中,它正在尝试实现以下路线:
http://localhost:43736/api/Recruiting/countries/all/ 我得到了404的回复。
我在哪里搞错了语法?我有这样的ajax调用:
$.getJSON(apiBaseUrl + "/countries/all/", function (data) {
$.each(data, function () {
var dropdownCountry = new DropdownCountry();
$.each(this, function (k, v) {
if (k === "Name") {
dropdownCountry.name = v;
}
if (k === "Key") {
dropdownCountry.key = v;
}
});
self.orgCountryDdl.push(dropdownCountry);
});
alert(DropdownCountry());
});apiBaseUrl是“api/recruiting”
发布于 2014-01-18 17:54:15
您似乎在使用请求中的常规路由,url...your请求url应该像http://localhost:43736/Recruiting/countries/all/...note那样,即匹配常规路由的请求永远无法到达属性化控制器/操作。
发布于 2014-01-19 02:02:11
您也可以在类级别添加API基本URL属性。
然后,在类级别上构建所有方法属性。
https://stackoverflow.com/questions/21207633
复制相似问题