如何触发asp.net web api的动作?
如何触发asp.net web api的动作?
有一个很好的问题在这里:如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目中?不幸的是,这并不足以解决我的问题。我已经尝试了两次,以确保我没有做错任何事情。我右键单击了"Controllers",添加了一个名为"Web API 2 Controller with actions, using Entity Framework"的项,在其中选择了我的模型类和数据库上下文。一切都进行得很顺利...但是...每次我尝试访问/api/Rest时,我都会收到404错误(我的Controller的名称是RestController)。
当添加新的路由时,我们必须牢记要将特定的路由放在顶部,后面跟着更通用的路由。否则,您的Web应用程序将无法正确进行路由。这是因为ASP.NET MVC的路由框架按照注册的顺序来匹配路由规则,所以如果我们将通用的路由放在顶部,它会优先匹配请求,而不会到达特定的路由规则。
在上面的引用中,作者建议我们在添加路由规则时遵循特定>通用的原则,以确保我们的Web应用程序能够正确地进行路由。这样做的原因是,如果我们将通用的路由放在顶部,它会匹配大多数请求,而特定的路由规则将永远不会得到应用。
在ASP.NET Web API中,我们可以通过以下方式来配置路由规则:
1. 打开Global.asax.cs文件。
2. 找到Application_Start方法。
3. 将以下代码添加到方法中:
GlobalConfiguration.Configure(WebApiConfig.Register);
这一行代码的作用是注册Web API的路由规则。
同样重要的是要注意,在注册Web API的路由规则之前,我们还需要注册MVC的路由规则。这是因为在MVC应用程序中,Web API和MVC共享相同的路由表。所以我们需要确保Web API的路由规则在MVC的路由规则之前注册。
通过按照上述步骤配置路由规则,我们可以确保我们的ASP.NET Web API能够正确地路由请求,并将其发送到适当的操作方法中。这样,我们就可以成功地调用ASP.NET Web API的操作方法了。
在现有的MVC(5)项目中使用WebAPI,需要进行以下步骤:
1. 添加WebApi包:
Microsoft.AspNet.WebApi
Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Core
Microsoft.AspNet.WebApi.WebHost
Newtonsoft.Json
2. 将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 } ); } } }
3. 在Global.asax中添加以下代码:
GlobalConfiguration.Configure(WebApiConfig.Register);
重要提示: 必须在
AreaRegistration.RegisterAllAreas();
之后添加上述代码
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); //\\ GlobalConfiguration.Configure(WebApiConfig.Register); //\\ FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
问题的出现原因是在现有的MVC项目中使用WebAPI时,没有正确配置所需的组件和路由。为了解决这个问题,需要添加所需的WebApi包,并在App_Start文件夹中创建WebApiConfig.cs文件并进行正确的配置。此外,还需要在Global.asax文件中添加对WebApiConfig的配置。确保在Application_Start方法中正确地配置并注册所有区域后,再进行WebApi的配置。