[水煮 ASP.NET Web API2 方法論](1-2)在 WebForm 應用程式中添加 ASP.NET Web API

来源:http://www.cnblogs.com/shuizhucode/archive/2016/11/09/6045561.html
-Advertisement-
Play Games

問題 怎麼樣將 Asp.Net Web Api 加入到 Asp.Net Web From 應用程式中 解決方案 在 Visual Studio 2013 中,創建新的 Web From,可以直接在"新建 ASP.NET 項目" 創建項目嚮導中,勾選ASP.NET Web API ,將其加入進來。如圖 ...


問題

  怎麼樣將 Asp.Net Web Api 加入到 Asp.Net Web From 應用程式中

 

解決方案

   Visual Studio 2013 中,創建新的 Web From,可以直接在"新建 ASP.NET 項目創建項目嚮導中,勾選ASP.NET Web API ,將其加入進來。如圖 1-2 所示。

 

 wKiom1gZ-CnSlNf0AACOJzJ-fnk328.png-wh_50

 

圖 1-2. Asp.NET 項目嚮導,同時選中 Web Form  Web API

 

  因為可以通過 NuGet 添加 ASP.NET Web API ,所以使用“Install-Package Microsoft.AspNet.WebApi”就可以輕易將其添加到現有的 Web Form 解決方案中。

   Visual Studio 2012 中使用也很簡單,只要創建一個 WebForm 項目,然後通過NuGet 來安裝 Web API 就可以。

 

工作原理

和在 MVC 中使用 ASP.NET Web API 一樣,在 Web Form 項目中ASP.NET Web API 使用 的結果就是,Web API Web Form 應用程式運行在同一個 ASP.NET 進程中。

   ASP.NET 項目中安裝 Microsoft.AspNet.WebApi NuGet 包時,會在 App_Start文件夾中添加  WebApiConfig  靜態類。這個文件是用來配置 ASP.NET Web API 和定義 ASP.NET Web API 路由。

  另外,在 Global.asax 中的 Application_Start 可以找到被添加的代碼,就像下麵的代碼片段,調用 Web API配置。

1 GlobalConfiguration.Configure(WebApiConfig.Register);

 

  Web API 運行在  Web Form 應用程式中與 運行在 MVC 應用程式中沒什麼不同。每個請求仍將被相關的IHttpHandler 處理。可能是用於處理 Web API  HttpControllerHandler 或者是用於處理 Web Form 的處理器。Web Form 相關的 ASPX 擴展名會交給 PageHandlerFactory,依次調用相關的 IHttpHandler 來處理 HTTP請求。System.Web.UI.Page 類是 Web Form 應用程式的預設組成部分,也是一個 IHttpHandler,其實他才是請求處理器的真正執行者。

 

代碼演示

清單 1-5 展示了一個簡單的模型類,這個模型是ApiController  Web Form 頁展示數據的共用類。

 

清單 1-5. 簡單模型,Web Form 頁,和 Web API 控制器

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public class Book{     public int Id { getset; }     public string Author { getset; }     public string Title { getset; } }public partial class _Default : Page{     protected void Page_Load(object sender, EventArgs e)     {         int id;         if (Int32.TryParse((string)Page.RouteData.Values["id"], out id))         {             var book = Books.List.FirstOrDefault(x => x.Id == id);             if (book == null)             {                 Response.StatusCode = 404;                 return;             }             ltlAuthor.Text = book.Author;             ltlTitle.Text = book.Title;             hplLink.NavigateUrl = "/api/books/" + book.Id;         }         Response.StatusCode = 404;     } }public class BooksController : ApiController{     public Book GetById(int id)     {         var book = Books.List.FirstOrDefault(x => x.Id == id);         if (book == nullthrow new HttpResponseException(HttpStatusCode.NotFound);         return book;     } }

 

  這是一個約定,在解決方案的 Cotrollers 文件夾中放 ApiController,但是,這並不意味著這是強制要求;在當前應用程式中,只要被聲明為 public 的類,類名以Controller 為尾碼的 IHttpController 實現類,都會被運行時發現,也會被當成一個可以處理的 HTTP 請求。

  就像 Web API  MVC 一塊兒運行一樣,當使用 Web Form 路由,我們也必須留心那些要被 Web API 處理的路由和那些要導向 ASPX 頁面之間引起的衝突。列表 1-6 展示了 Web Form  Web API的簡單路由設置。ASP.NET Web API 路由是在 WebApiConfig 的靜態類中設置的,然而,Web Form 路由是在RouteConfig 靜態類中設置的。

 

列表 1-6. Web API 路由和 Web Form 路由

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public static class RouteConfig{     public static void RegisterRoutes(RouteCollection routes)     {         var settings = new FriendlyUrlSettings();         settings.AutoRedirectMode = RedirectMode.Permanent;         routes.EnableFriendlyUrls(settings);         routes.MapPageRoute(         "book-route",         "book/{id}",         "~/default.aspx");     } }public static class WebApiConfig{     public static void Register(HttpConfiguration config)     {         // Web API configuration and services        // Web API routes        config.MapHttpAttributeRoutes();         config.Routes.MapHttpRoute(         name: "DefaultApi",         routeTemplate: "api/{controller}/{id}",         defaults: new { id = RouteParameter.Optional }         );     } }

博客園http://www.cnblogs.com/shuizhucode/

51 CTOhttp://shuizhucode.blog.51cto.com/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 公司的redis業務很多,redis監控自然也是DB監控的一大模塊,包括採集、展示、監控告警。本文主要介紹redis監控的主要指標和採集方法。 一、Redis監控系統邏輯 1、DBA通過前臺頁面添加redis監控,填寫ip和埠,配置閾值、負責人等信息 2、前臺調用自動調度平臺介面將redis監控採 ...
  • 建議設置網卡NAT模式 動態網路配置:1、一定要開啟本地DHCP服務 2、在虛擬網路編輯器中選擇NAT模式選中DHCP項如下圖 3、ifup eth0 靜態網路配置 : 註釋:ifcfg-eth0部分參數說明 DEVICE=eth0#描述網卡對應的設備別名 HWADDR=00:0C:29:42:DD ...
  • 承接著上一篇, 這一篇主要以堆棧的方式來演示一下, db數據轉換到類中去的一個過程. 先看第一張圖 程式在運行到176行(上一篇貼出的代碼)的時候, 就會出現上圖中的第一個棧. 那在此之前, Dapper又做了些什麼呢? 拋開Dapper的這種OpCodes的實現方式來說, 我們自己用代碼去轉換, ...
  • 在上一篇文章中我們創建了實體對象與介面協定,在這一篇文章中我們來學習如何創建WCF的服務端代碼。創建項目BookMgr.Service的WCF服務代碼。 ...
  • ServiceStack 是一個高性能的 .NET Web 服務框架,簡化了開發 XML、JSON、JSV 和 WCP SOAP Web 服務。它定義了符合 Martin Fowlers 數據傳輸對象模式,這是一個跨平臺的 Web 服務框架。 接下來介紹ServiceStack.Caching的使用 ...
  • C# 委托 【原文】http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇《C# 知識回顧 - 委托 delegate》已經介紹委托的基礎知識,這裡是對其進行補充說明以及深入瞭解。 目錄 帶有命名方法的委托與帶有匿名方法的委托 委托可以與命名方法關聯 ...
  • Nop中使用UEditor編輯器,官網 http://ueditor.baidu.com/website/ 下載後解壓。 \Presentation\Nop.Web\Content 下,新建文件夾 ueditor,將解壓後的文件 copy 至此文件夾。 \Presentation\Nop.Web\A ...
  • 因轉戰php,windows下開發環境,伺服器是linux環境,經常會碰到utf-8 BOM的問題(utf8簽名和無簽名),之前碰到問題就先查看有時還會忘掉,後來就做了這個小工具進行檢測,因為對C#比較熟所以就用C#來做了。 可以檢測一個目錄下指定尾碼名的代碼文件編碼格式,雙擊列表的某一項或右鍵可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...