問題
在安源等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、做網(wǎng)站 網(wǎng)站設(shè)計制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),安源網(wǎng)站建設(shè)費用合理。
怎么樣將 Asp.Net Web Api加入到Asp.Net Web From應(yīng)用程序中
解決方案
在Visual Studio 2013中,創(chuàng)建新的 Web From,可以直接在"新建 ASP.NET項目"創(chuàng)建項目向?qū)е?,勾選 ASP.NET Web API,將其加入進來。如圖 1-2所示。
圖 1-2.在Asp.NET 項目向?qū)?,同時選中 Web Form和 Web API
因為可以通過 NuGet添加 ASP.NET Web API,所以使用“Install-Package Microsoft.AspNet.WebApi”就可以輕易將其添加到現(xiàn)有的 Web Form解決方案中。
在Visual Studio 2012中使用也很簡單,只要創(chuàng)建一個 WebForm項目,然后通過NuGet來安裝 Web API就可以。
工作原理
和在MVC中使用 ASP.NET Web API一樣,在 Web Form項目中ASP.NET Web API使用的結(jié)果就是,Web API和 Web Form應(yīng)用程序運行在同一個 ASP.NET進程中。
在 ASP.NET項目中安裝 Microsoft.AspNet.WebApi NuGet包時,會在App_Start文件夾中添加 WebApiConfig的靜態(tài)類。這個文件是用來配置 ASP.NET Web API和定義 ASP.NET Web API路由。
另外,在Global.asax中的 Application_Start可以找到被添加的代碼,就像下面的代碼片段,調(diào)用Web API配置。
GlobalConfiguration.Configure(WebApiConfig.Register);
Web API運行在 Web Form應(yīng)用程序中與運行在 MVC應(yīng)用程序中沒什么不同。每個請求仍將被相關(guān)的 IHttpHandler處理??赡苁怯糜谔幚?Web API的 HttpControllerHandler或者是用于處理 Web Form的處理器。Web Form相關(guān)的 ASPX擴展名會交給 PageHandlerFactory,依次調(diào)用相關(guān)的 IHttpHandler來處理 HTTP請求。System.Web.UI.Page類是 Web Form應(yīng)用程序的默認組成部分,也是一個 IHttpHandler,其實他才是請求處理器的真正執(zhí)行者。
代碼演示
清單1-5展示了一個簡單的模型類,這個模型是ApiController和 Web Form頁展示數(shù)據(jù)的共享類。
清單 1-5. 簡單模型,Web Form 頁,和 Web API 控制器
public class Book{ public int Id { get; set; } public string Author { get; set; } public string Title { get; set; } }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 == null) throw new HttpResponseException(HttpStatusCode.NotFound); return book; } }
這是一個約定,在解決方案的Cotrollers文件夾中放 ApiController,但是,這并不意味著這是強制要求;在當(dāng)前應(yīng)用程序中,只要被聲明為 public的類,類名以Controller為后綴的 IHttpController實現(xiàn)類,都會被運行時發(fā)現(xiàn),也會被當(dāng)成一個可以處理的 HTTP請求。
就像Web API和 MVC一塊兒運行一樣,當(dāng)使用 Web Form路由,我們也必須留心那些要被 Web API處理的路由和那些要導(dǎo)向 ASPX頁面之間引起的沖突。列表 1-6展示了 Web Form和 Web API的簡單路由設(shè)置。ASP.NET Web API路由是在 WebApiConfig的靜態(tài)類中設(shè)置的,然而,Web Form路由是在RouteConfig靜態(tài)類中設(shè)置的。
列表 1-6. Web API 路由和 Web Form 路由
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 } ); } }
文章名稱:[水煮ASP.NETWebAPI2方法論](1-2)在WebForm應(yīng)用程序中添加ASP.NETWebAPI
分享地址:http://muchs.cn/article12/jioodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站排名、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)