ASP.NET MVC- 在现有MVC项目添加 WebAPI【转】

1. 增加一个WebApi Controller, VS 会自动添加相关的引用,主要有System.Web.Http,System.Web.Http.WebHost,System.Net.Http

2. 在App_Start 下创建 WebApiConfig.cs 并注册路由

using System;
using System.Collections.Generic;
using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; namespace Libaray.Web.App_Start { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服务 // Web API 路由  config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }

3. 在Global.asax, Application_Start 下添加 WebAPI 配置

using Libaray.Web.App_Start;
using System;
using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace Libaray.Web { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } }

4. 在第一步添加的WebApi 中填写相应代码,

using Libaray.Web.Models;
using System;
using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace Libaray.Web.Controllers { [RoutePrefix("api/SystemUsers")] public class SystemUsersController : ApiController { [HttpGet, Route("GetUserList")] public List<UserModel> GetUserModels() { UserModelService UserBS = new UserModelService(); return UserBS.FindList(u => u.isActive == true); } [HttpGet, Route("GetUser")] public UserModel GetUserModel(int id = 0) { if(id != 0) { UserModelService UserBS = new UserModelService(); return UserBS.Find(u => u.Id == id); } else { return null; } } [HttpPost, Route("Login")] public bool Login(string loginId,string password) { UserModelService UserBS = new UserModelService(); return UserBS.ValidateLoginInfo(loginId, password); } } }

5. Run the application and call the API. Example: http://localhost:49919/api/SystemUsers/GetUserList

6. 一些疑问

做完以上配置后,运行网页,仍不能得到想要的结果,后查出因为我是在Areas里面建立了一个API的文件夹

只要将View文件夹和APIAreaRegistration.cs文件删除,问题就消失了,具体原因没有细究,应该还是路由的问题。

原文网址:

https://www.cnblogs.com/tuyile006/p/6151555.html

猜你喜欢

转载自www.cnblogs.com/cxeye/p/12194999.html