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的擴展包,故引用只有兩個):
(如果原來已經引用了System.Web.Http則需要刪除原來的引用後重新引用)
添加完引用後,我們需要在App_Start目錄添加一個WebApiConfig的配置文件,用於初始化api訪問路由,代碼如下:
[csharp] view plain copy
- public static class WebApiConfig
- {
- public static void Register(HttpConfiguration config)
- {
- // Web API 路由
- config.MapHttpAttributeRoutes();
- config.Routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{id}",
- defaults: new { id = RouteParameter.Optional }
- );
- }
- }
添加完該配置文件後,我們接下來就需要在Global.asax全局文件中註冊該配置文件:
[csharp] view plain copy
- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- GlobalConfiguration.Configure(WebApiConfig.Register);
- FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- }
(註意:GlobalConfiguration.Configure(WebApiConfig.Register);註冊信息必須位於普通RouteConfig之前,不然無法生效。)
完成以上配置操作後,我們就對webapi的基本運行環境配置完畢了,接下來我們添加一個web api controller:
[csharp] view plain copy
- [RoutePrefix("api/Notify")]
- public class NotifyController : ApiController
- {
- [Route("Alipay")]
- public string Alipay()
- {
- return "success";
- }
- }<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 MVC同時支持web與webapi模式