我有问题。
WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new
{
id = RouteParameter.Optional,
api = "api",
namespaces = new string[] { "able.application.api" }
}
);
}
}
全球
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configuration.EnsureInitialized();
}
控制器
public class ContentModelController : ApiController
{
public ContentModelController()
{
}
[HttpPost, HttpGet]
public HttpResponseMessage Get(int? id)
{
return null;
}
}
问题是:当我调用 get 方法时,我收到以下错误。
呼叫网址: http://localhost:54531/api/ContentModel/get?id=1
请帮帮我.. :(
<Error> <Message> No HTTP resource was found that matches the request URI 'http://localhost:54531/api/ContentModel/get?id=1'. </Message> <MessageDetail> No type was found that matches the controller named 'ContentModel'. </MessageDetail> </Error>
使用此模板
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "all", id = RouteParameter.Optional }
);
而不是这个
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new
{
id = RouteParameter.Optional,
api = "api",
namespaces = new string[] { "able.application.api" }
}
);
在您的WebApiConfig.cs
文件中。希望这对你有用。
尝试遵循Saurabh Srivastava的建议,并将您的API调用更新为: http://localhost:54531/api/ContentModel/get/1
或者,可以使用原始调用将 Get 的方法签名更新为以下内容: public HttpResponseMessage Get([FromUri]int? id)