我创建了一个默认的MVC 5 Web应用程序,并希望允许客户端调用该API。由于原因太长而无法进入,我真的需要将API作为应用程序的一部分。我首先在名为 FooController 的默认解决方案中添加了一个额外的控制器,该解决方案返回带有一些虚拟数据的View。这应该与Web API无关,但我想确保至少可以添加一个MVC控制器。我可以运行解决方案,当浏览到http://localhost:54110/Foo我的虚拟数据被返回时
在单独的解决方案中,我能够使用Getting Started with ASP.NET Web API 2来创建API。我可以使用http://localhost:47503/api/products/2来调用api,它会向我发送一个json文件。一切都很好。
我回到了我的第一个项目并重复了创建Web API2的步骤,但是当我尝试通过http://localhost:54110/api/products/2调用API时,我得到了404.显然我遇到了路由问题。
这是我的Application_Start
,我在其中添加了最后一行来调用GlobalConfiguration
,因为这是Web API示例中使用的内容。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
这是来自WebApiConfig
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我知道这是被调用的,因为调试器正在破坏这个方法。关于我做错了什么的任何想法?有没有办法在http://localhost:54110/api/products/2之后点击 ENTER 时跟踪发生的事情?