我有我的WebAPI項目的示例控制器:的WebAPI控制器未發現
public class MilestonesController : ApiController
{
// GET api/milestones
public IEnumerable<string> Get()
{
return new string[] { "M#1", "M#2" };
}
// GET api/milestones/5
public string Get(int id)
{
return "M with {id}";
}
// POST api/milestones
public void Post([FromBody]string value)
{
}
// PUT api/milestones/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/milestones/5
public void Delete(int id)
{
}
}
如果我試圖找到它:
http://localhost:59493/api/milestones
我總是得到錯誤:
No HTTP resource was found that matches the request URI 'http://localhost:59493/api/milestones'.
No type was found that matches the controller named 'milestones'.
預先感謝您!
編輯:
我WebApiConfig:
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 }
);
}
}
的Global.asax:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
可能的解決方案:
我已經刪除了我的項目,我已經創建了一個新的一個(WebAPi項目),現在它工作。 WebApiConfig等是一樣的,所以我真的不知道我的第一次嘗試有什麼問題
是否可以從Global.asax.cs中添加App_Start()方法? –
當WebApiConfig存在時缺少web-api路由通常是因爲它們沒有在App_Start()(或其他方法)中連線。如果您將Web api添加到現有的mvc應用程序,則會添加WebApiConfig,但不會連線。因此,請求App_Start –
嘗試註釋掉'GlobalConfiguration.Configure(WebApiConfig.Register);'或'WebApiConfig.Register(GlobalConfiguration.Configuration);' –