我有一个使用jQuery Ajax消耗的Web API 2,通过文档查看,您现在可以在Controller内部包含一个路由,以便您可以在GET请求中包含其他参数。
我试过添加这个例子:
[Route("api/formHTML/{id}/{code}/{value}")]
public IEnumerable<string> Get(int id, int code, int value)
{
return new string[] {"<html><head></head><body>Test</body></html>"};
}
这基本上会返回一些HTML代码。
在api / formHTML / 1/5/2上使用GET时,我一直找不到404
我的Global.asax中仍然包含默认路由映射。
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}"
);
}
有谁知道为什么我会得到404?
我知道我可以通过在Get Request中将它们作为数据对象发送并在Web API中使用formBody来获取值,但我最好使用上述约定。
由于
答案 0 :(得分:1)
我已经通过再次阅读文档解决了这个问题,我将默认映射移到了WebApiConfig.cs,然后从Global.asax中调用了这个方法:
GlobalConfiguration.Configure(WebApiConfig.Register);
WebApiConfig.cs包含:
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
}
}
我的问题已经解决了!