中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-06-22 18:12:02 來源:網絡 閱讀:679 作者:水煮code 欄目:編程語言

問題

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

 

解決方案

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

 

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

 

圖 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 配置。

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 控制器

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,但是,這并不意味著這是強制要求;在當前應用程序中,只要被聲明為 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 路由

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 }
        );
    }
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

理塘县| 博客| 花莲市| 连云港市| 色达县| 溆浦县| 隆回县| 浮梁县| 古浪县| 彭山县| 信丰县| 苏尼特左旗| 邮箱| 靖边县| 宝兴县| 涪陵区| 封丘县| 中山市| 德兴市| 三穗县| 和顺县| 卢湾区| 巴南区| 惠水县| 青浦区| 赤水市| 集贤县| 望城县| 伊宁市| 阿巴嘎旗| 永善县| 饶阳县| 商河县| 太湖县| 遂平县| 汝州市| 通州区| 塘沽区| 岚皋县| 大田县| 邢台县|