[水煮ASP.NETWebAPI2方法論](1-2)在WebForm應(yīng)用程序中添加ASP.NETWebAPI

問題

在安源等地區(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所示。

 

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

 

圖 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)

h5響應(yīng)式網(wǎng)站建設(shè)