我正在尝试让 API Controller 在 ASP.NET MVC 4 Web 应用程序中工作。但是,每个请求都会导致 404 ,我很难过。 :/
我有来自项目模板的标准 API Controller 路由,定义如下:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
在 Global.asax 中调用注册:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
// Register API routes
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
我有一个像这样的基本 API Controller :
namespace Website.Controllers
{
public class FavoritesController : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new [] { "first", "second" };
}
// PUT api/<controller>/5
public void Put(int id)
{
}
// DELETE api/<controller>/5
public void Delete(int id)
{
}
}
}
现在,当我浏览到本地主机:59900/API/收藏我希望获取被调用方法,而是我得到一个 404 状态代码和以下回应:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:59900/api/Favorites'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'Favorites'.
</MessageDetail>
</Error>
任何帮助将不胜感激,我在这里有点失去理智。 :) 谢谢!
最佳答案
我遇到的一件事是我的配置在 GLobal.asax 文件中以错误的顺序注册,例如:
正确的顺序:
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
错误顺序:
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
WebApiConfig.Register(GlobalConfiguration.Configuration);
只是说,这是我的问题,更改顺序很明显,但有时会被忽视,并会导致很多挫折。
关于asp.net-mvc - 所有 ASP.NET Web API Controller 都返回 404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15556035/