ASP.NET MVC同时支持web与webapi模式

原文地址:https://blog.csdn.net/laymat/article/details/65444701

我们在创建 web mvc项目时是不支持web api的接口方式访问的,所以我们需要添加额外的组件来支持实现双模式。

首先我们需要准备三个web api依赖的组件(目前在.net 4/4.5版本下面测试正常,2.0暂未进行测试,需要自行测试)

1、Microsoft.AspNet.WebApi.Client.5.2.2

2、Microsoft.AspNet.WebApi.Core.5.2.2

3、Microsoft.AspNet.WebApi.WebHost.5.2.2

web api依赖组件下载地址 https://pan.baidu.com/s/1slJHdVJ

下载依赖组件后解压至packages目录或其他目录即可,解压完毕后打开编辑器 > 添加引用 > 找到下载的三个依赖dll并引用(其中Microsoft.AspNet.WebApi.Client.5.2.2为System.Net.Http的扩展包,故引用只有两个):

ASP.NET MVC同时支持web与webapi模式

(如果原来已经引用了System.Web.Http则需要删除原来的引用后重新引用)

添加完引用后,我们需要在App_Start目录添加一个WebApiConfig的配置文件,用于初始化api访问路由,代码如下:

  1. public static class WebApiConfig
  2. {
  3. public static void Register(HttpConfiguration config)
  4. {
  5. // Web API 路由
  6. config.MapHttpAttributeRoutes();
  7. config.Routes.MapHttpRoute(
  8. name: "DefaultApi",
  9. routeTemplate: "api/{controller}/{id}",
  10. defaults: new { id = RouteParameter.Optional }
  11. );
  12. }
  13. }

添加完该配置文件后,我们接下来就需要在Global.asax全局文件中注册该配置文件:

  1. protected void Application_Start()
  2. {
  3. AreaRegistration.RegisterAllAreas();
  4. GlobalConfiguration.Configure(WebApiConfig.Register);
  5. FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  6. RouteConfig.RegisterRoutes(RouteTable.Routes);
  7. }

(注意:GlobalConfiguration.Configure(WebApiConfig.Register);注册信息必须位于普通RouteConfig之前,不然无法生效。)

完成以上配置操作后,我们就对webapi的基本运行环境配置完毕了,接下来我们添加一个web api controller:

  1. [RoutePrefix("api/Notify")]
  2. public class NotifyController : ApiController
  3. {
  4. [Route("Alipay")]
  5. public string Alipay()
  6. {
  7. return "success";
  8. }
  9. }<span style="white-space:pre;">  </span>

[RoutePrefix("api/Notify")] 配置api访问路径
示例:http://domain/api/Notify

[Route("Alipay")] 配置api访问接口  示例:http://domain/api/Notify/Alipay

如果需要对某个方法设置访问模式,则可以添加上[HttpPost]或[HttpGet]位于[Route]上方。

上一篇:Asp.net core 学习笔记 (library)


下一篇:力扣 - 剑指 Offer 12. 矩阵中的路径