1. 程式人生 > >ASP.NET MVC同時支持web與webapi模式

ASP.NET MVC同時支持web與webapi模式

mod AR center 擴展 ica app attr host 版本

原文地址: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
  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全局文件中註冊該配置文件:

[csharp] view plain copy
  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:

[csharp] view plain copy
  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 MVC同時支持web與webapi模式