如何将 Web API 添加到现有的 ASP.NET MVC (5) Web Application 项目中?

编程入门 行业动态 更新时间:2024-10-28 06:35:00
本文介绍了如何将 Web API 添加到现有的 ASP.NET MVC (5) Web Application 项目中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

假设您在创建新的 MVC (5) 项目时忘记勾选 Web API 复选框(将其添加到项目中),您需要做什么来添加 Web API 并使其工作?

Assuming you forgot to tick the Web API checkbox (add it to the project) when making a new MVC (5) project, what do you need to do add Web API and get it working?

有很多迁移问题,但似乎没有一个具有将 Web API 添加到 MVC 5 项目的完整和最新的步骤,而且似乎已经从一些旧的答案中改变了.

将 Web API 添加到 MVC 4

添加GlobalConfiguration.Configure(WebApiConfig.Register) MVC 4

推荐答案

更新 MVC 项目

使用 Nuget 获取最新的 Web API.

Update the MVC project

Use Nuget to get the newest Web API.

项目 - 右键单击​​ - 管理 Nuget 包 - 搜索 Web API(Microsoft ASP.NET Web API ...)并将其安装到您的 MVC 项目中.

Project - Right click - Manage Nuget Packages - Search for Web API (Microsoft ASP.NET Web API ...) and install it to your MVC project.

那么您仍然需要让 Web API 路由 工作.来自 Microsoft 的配置 ASP.NET Web API 2

Then you still need to get Web API routing to work. From Microsoft's Configuring ASP.NET Web API 2

将 WebApiConfig.cs 添加到 App_Start/文件夹

using System.Web.Http; namespace WebApplication1 { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // TODO: Add any additional configuration code. // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // WebAPI when dealing with JSON & JavaScript! // Setup json serialization to serialize classes to camel (std. Json format) var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; formatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); } } }

如果您有一个 MVC 项目,它将有 Global.asax.cs,请添加新路由.Global.asax.cs 路由的顺序至关重要. 注意有过时的例子使用WebApiConfig.Register

If you have an MVC Project it will have Global.asax.cs, add the new routes. Order of the Global.asax.cs routes is critical. Note there are outdated examples which use WebApiConfig.Register

将此行添加到 Global.asax.cs:GlobalConfiguration.Configure(WebApiConfig.Register);

protected void Application_Start() { // Default stuff AreaRegistration.RegisterAllAreas(); // Manually installed WebAPI 2.2 after making an MVC project. GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way //WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED // Default stuff FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }

WebAPI 帮助

获得(非常)有用的 WebAPI 帮助页面,安装 WebAPI.HelpPage.请参阅 channel9.msdn/Events/Build/2014/3-644(约 42 分钟)它的作用.看起来很有帮助!

WebAPI Help

To get the (very) helpful WebAPI help pages, install WebAPI.HelpPage. See channel9.msdn/Events/Build/2014/3-644 (~42 minutes in) for what it does. It looks very helpful!

Nuget 控制台:Install-Package Microsoft.AspNet.WebApi.HelpPage

到控制器文件夹 -> 添加新项目 -> Web API 控制器类.

To the controllers folder -> Add new item -> Web API Controller Class.

public class TestController : ApiController { //public TestController() { } // GET api/<controller> public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/<controller>/5 public string Get(int id) { return "value"; } //... }

现在您可以像往常一样在 IE/FF/Chrome 中进行测试,或者在 JavaScript 控制台中进行非获取测试.

Now you can test in IE/FF/Chrome as usual, or in the JavaScript consoles for non-get testing.

(只有 URL 中的控制器,它将调用新 Web API 控制器中的 GET() 操作,它会根据 REST 自动映射到方法/操作,例如 PUT/POST/GET/DELETE.您不需要需要像在 MVC 中那样通过操作调用它们)网址直接:

(With just the controller in the URL it will call the GET() action in the new Web API Controller, it's automatically mapped to methods/actions depending on the REST e.g. PUT/POST/GET/DELETE. You don't need to call them by action like in MVC) The URL directly:

localhost:PORT/api/CONTROLLERNAME/

或者使用 jQuery 查询控制器.运行项目,打开控制台(IE 中的 F12)并尝试运行 Ajax 查询.(检查您的端口和控制器名称)

Alternatively use jQuery to query the controller. Run the project, Open the console (F12 in IE) and try run an Ajax query. (Check your PORT & CONTROLLERNAME)

$.get( "localhost:PORT/api/CONTROLLERNAME/", function( data ) { //$( ".result" ).html( data ); alert( "Get data received:" + data); });

旁注:组合时需要考虑一些优点/缺点一个项目中的MVC和Web API

WebAPI 帮助验证:localhost:PORT/help

更多推荐

如何将 Web API 添加到现有的 ASP.NET MVC (5) Web Application 项目中?

本文发布于:2023-11-05 21:29:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1561909.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何将   项目   API   Web   ASP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!