Asp.net mvc Web Api配置
我有个问题 WebApiConfigAsp.net mvc Web Api配置,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我有个问题 WebApiConfig public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTempl
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" }
}
);
}
}
Global.asax
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方法时,我得到以下错误
Callull:
请帮帮我(
未找到与请求URI名称匹配的HTTP资源http://localhost:54531/api/ContentModel/get?id=1'.
未找到与名为“ContentModel”的控制器匹配的类型。
使用此模板
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
文件中。
希望这对您有用。使用此模板
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的方法签名更新为:
公共HttpResponseMessage Get([FromUri]int?id)
尝试遵循Saurabh Srivastava的建议,并将API调用更新为:
http://localhost:54531/api/ContentModel/get/1
或者,您可以使用原始调用将Get的方法签名更新为:
public HttpResponseMessage Get([FromUri]int?id)
删除默认值。它们似乎不适用于路由中的任何内容。抱歉..我再次遇到相同的错误。是否使用IIS的本地实例?删除默认值。它们似乎不适用于路由中的任何内容。抱歉..我再次遇到相同的错误。是否使用IIS的本地实例?