[英]404 error after adding Web API to an existing MVC Web Application
这里有一个很好的问题: 如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目中?
不幸的是,这还不足以解决我的问题。 我已经尝试了两次,以确保我没有做错任何事。 我右键单击“控制器”并添加了项目“Web API 2 Controller with actions,using Entity Framework”,其中我选择了我的模型类和db上下文。 一切都很顺利...但仍然...每次我试图访问/ api / Rest我得到404错误(我的控制器的名称是RestController)。
它的工作!!! 我不想相信,但猜猜是什么,问题与Global.asax路由顺序有关 。
虽然它不适用于:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 4th
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
它适用于:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 2nd
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
疯了,我知道。
如果要在现有MVC(5)项目中使用WebAPI,则必须执行以下步骤:
1.添加WebApi包:
Microsoft.AspNet.WebApi
Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Core
Microsoft.AspNet.WebApi.WebHost
Newtonsoft.Json
WebApiConfig.cs
文件添加到App_Start
文件夹:
using System.Web.Http;
namespace WebApiTest
{
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 }
);
}
}
}
Glabal.asax
下行添加到Glabal.asax
:
GlobalConfiguration.Configure(WebApiConfig.Register);
重要说明:您必须在AreaRegistration.RegisterAllAreas();
之后添加以上行AreaRegistration.RegisterAllAreas();
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
//\\
GlobalConfiguration.Configure(WebApiConfig.Register);
//\\
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
“当添加新路线总是保持心态时,您必须在顶部添加特定路线,然后在最后添加更通用的路线。否则,您的网络应用将永远不会收到正确的路由。”
以上是此处引用的内容: http : //www.codeproject.com/Tips/771809/Understanding-the-Routing-Framework-in-ASP-NET-MVC
我知道已经给出了答案,但这有助于理解为什么我们需要放置GlobalConfiguration.Configure(WebApiConfig.Register); 在RouteConfig.RegisterRoutes(RouteTable.Routes)之前;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.