怎麼在Webforms 下搭建WebAPI?

來源:互聯網
上載者:User
公司的很多項目前期一直是用的WebForms。但是因為業務的發展,公司要在原有的項目上接入移動端,webservice有點老舊了,現在比較流行RESTFul,於是乎就想到了WebAPI。

一、如果是建立項目最簡單,檔案=>建立=>項目=>Web=> ASP.NET Web 應用程式,在下方同時勾選Web Forms 和 Web API 核心引用即可,webfroms核心和WebAPI核心的應用程式就建立好了。

二、如果是原有的項目上增加WebAPI,只要將相關的包引用即可。

1.這裡先建立WebForms 應用程式

2.Webfroms項目建立完成後,需要用到VS的NuGet包管理器。右擊引用,選擇 管理NuGet程式包。

選擇 瀏覽,搜尋WebAPI,選擇第一個Microsoft.AspNet.WebApi;點擊右邊的安裝後點擊確定,後選擇我接受,等到輸出顯示成功,則安裝完成。

3.右擊Web項目,添加名為App_Start的檔案夾,在App_Start檔案夾下建立名為WebApiConfig的cs檔案。

清理命名空間,將類更改為static類型,添加必要代碼,缺少引用的自行引用。

完整代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http;namespace WebFormsDemo{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 }            );        }    }}

4.需要在Global.asax檔案下的Application_Start方法中註冊一下WebAPI,這裡需要引用System.Web.Http;完整代碼如下:

protected void Application_Start(object sender, EventArgs e){// 在應用程式啟動時啟動並執行代碼    GlobalConfiguration.Configure(WebApiConfig.Register);}

5.接下來讓我們來測試一下,建立一個Controller

6.瀏覽器訪問http://localhost:27650/api/values/get?id=1,測試通過。

三、使用OWIN來作為宿主啟動Webapi

上述是使用Global方式啟動WebAPI,如果項目中使用的SignalR,就必須使用OWIN來作為宿主,雖然網上有教程Global也可以啟動SignalR(在中Application_Start方法加上一句 RouteTable.Routes.MapHubs();),但是微軟早在2014年6月就對其聲明了過時,建議使用Owin Startup Class的方式啟動SignalR。()

1.廢話不多說,建立Startup類

2.直接在Configuration 方法下建立一個ConfigureWebapi方法,完整代碼如下:

        /// <summary>/// 配置Webapi/// </summary>/// <param name="app"></param>public void ConfigureWebapi(IAppBuilder app)        {//建立一個HTTP的執行個體配置HttpConfiguration config = new HttpConfiguration();//映射路由            config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );//將配置注入OWIN管道中            app.UseWebApi(config);        }

3.我們發現,有錯誤資訊IAppBuilder中未包含UseWebApi的定義,原因是缺少Self-Host寄宿支援,在封裝管理員控制台,中輸入以下指令:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

4.安裝完成後錯誤提示消失

5.移除Global中的啟動方式,並將ConfigureWebapi方法初始化。

6.讓我們來測試一下,http://localhost:27650/api/values/get?id=1,報錯誤404.

7.原因是還缺少一個名為 Microsoft.Owin.Host.SystemWeb 的包,這個包提供了Owin服務運行ASP.NET 網路請求管道。在封裝管理員控制台,中輸入以下指令:

install-package Microsoft.Owin.Host.SystemWeb

8.讓我們再來測試一下,瀏覽器中輸入http://localhost:27650/api/values/get?id=1,測試通過。

最後,值得一提的是官方的教程大多都使用隱式類型var 關鍵字,有網友說使用隱式類型的好處有

1.它有利於更好地為本地變數命名。
2. 它有利於設計更好的API。
3. 它促使對變數進行初始化。
4. 它消除了代碼的混亂。
5. 它不需要using指示符。

樓主還沒有深刻的體會和研究,不敢在這裡妄加解釋。還在學習中,下面是微軟官方的文檔,大家感受一下。

文章到這裡就結束了,其實寫如何搭建WebAPI的文章也很多,這裡僅僅是做一下記錄,以防自己忘掉,如果此文章有幸被你看到,歡迎不吝指教。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.