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


添加完該配置文件后,我們接下來就需要在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]上方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM