webapi-1 给现有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

原文地址:https://www.cnblogs.com/eye-like/p/9337878.html

时间: 2024-10-06 17:50:01

webapi-1 给现有MVC 项目添加 WebAPI的相关文章

给现有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.Ta

当重装eclipse后,给现有web项目添加tomcat的构建路径

在eclipse"首选项"-"service environment"中配置好tomcat后,给现有web项目添加构建路径: 1.选中一个web项目右键选中"构建路径"-"配置构建路径" 2.选中右边"add library" 3.选择"service runtime"然后点击"下一步" 4.选择正确版本点击"完成"就可以了.

.NET开发 MVC项目 添加Controller出现的错误:无法检索到元数据

ERROR: ---------------------------Microsoft Visual Studio---------------------------无法检索"MvcMusicStore.Models.Album"的元数据.Using the same DbCompiledModel to create contexts against different types of database servers is not supported. Instead, cre

Asp.Net Core 3.1 Api 集成Abp项目动态WebApi

上一节讲到了abp的依赖注入,其实我们用webapi时,控制器的代码几乎都是多余的,abp为我们提供了Application层动态生成WebApi接口的功能 我们在ApiHost 项目安装 Swashbuckle.AspNetCore Nuget Package 5.0.0 在Startup中使用它, 访问项目路径加上/Swagger回车就可以看到接口了 但是现在Application的方法还没有动态生成WebApi 我们加入“用Application项目创建webapi控制器的代码” ,但是这

MVC.Net:WebAPI添加对jsonP的支持

在某些情况下,我们需要在WebAPI项目中添加对jsonP的支持.比如我们同时创建了MVC.Net和WebAPI两个项目,这两个项目使用不同的端口,这时如果MVC.Net项目的前端想要直接访问WebAPI项目,就会出现"cross-origin"的错误.要解决这个问题,我们通常会使用jsonP的方法. 要让WebAPI支持返回jsonP格式,需要的步骤如下: 1. 通过NuGet安装WebApiContrib.Formatting.Jsonp.项目地址:https://github.c

MVC.Net:MVC.Net与WebAPI的IOC实现

我们通过Ninject(http://www.ninject.org/)项目来帮助我们实现MVC.Net与WebAPI项目的IOC实现. 首先我们来看MVC.Net的IOC实现. 1. 通过NuGet我们安装Ninject.MVC3,它会同时安装Ninject.Ninject.Web.Common和Ninject.Web.Common.WebHost.不用被它的名字干扰,它对MVC.Net 5也是适用的. 2. 安装成功后,在MVC.Net的App_Start目录中会多出一个NinjectWeb

mvc方式创建webAPI 解决跨域问题

方法在Win10 + VS2017(MVC5)测试通过 1.建立 WebApi项目: 输入项目名称和位置,确定,进入模板选择页面. 选择 WEB API 模板(选择Web API 时会添加对MVC 的支持) 2.添加ApiController 查看生产的目录结构,发现WebAPI 的结构和普通MVC程序结构是非常类似的. 默认VS会在Controllers 文件夹下创建一个示例控制器: ValuesController 通过查看该控制器代码,发现WebAPI的控制器与MVC控制器的主要区别: 1

OWIN 自宿主模式WebApi项目,WebApi层作为单独类库供OWIN调用

为什么我们需要OWIN 过去,IIS作为.NET开发者来说是最常用的Web Server(没有之一),源于微软产品的紧耦合关系,我们不得不将Website.Web Application.Web API等部署在IIS上,事实上在2010年前并没有什么不妥,但随着近些年来Web的发展,特别是移动互联网飞速发展,IIS作为Web Server已经暴露出他的不足了.主要体现在两个方面,ASP.NET (System.Web)紧耦合IIS,IIS紧耦合OS,这就意味着,我们的Web Framework必

添加Bootstrap 到MVC项目中(vs2010)

环境:Visual Studio 2010   ASP.NET MVC3 手动添加: 下载地址:http://twitter.github.com/bootstrap/ 一个js,两个css,两张图 js 文件:  •bootstrap.min.js CSS 文件:  •bootstrap.min.css  •bootstrap-responsive.min.css image 文件:  •glyphicons-halflings.png  •glyphicons-halflings-white