真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NETCore的Middleware怎么使用

本篇內(nèi)容主要講解“ASP.NET Core的Middleware怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“ASP.NET Core的Middleware怎么使用”吧!

創(chuàng)新互聯(lián)擁有10多年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),對于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、重慶App定制開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名注冊等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

結(jié)構(gòu)

在ASP.NET Core里,每個(gè)從「瀏覽器傳入」的HTTP Request封包,會被系統(tǒng)封裝為「HttpRequest對象」,并且配置默認(rèn)的HttpResponse對象、Session對象、ClaimsPrincipal對象...等等物件。接著將這些對象,封裝成為一個(gè)「HttpContext對象」,用來提供ASP.NET Core后續(xù)使用。

ASP.NET Core在收到HttpContext之后,會把它交給一個(gè)「Pipeline」去處理。這個(gè)Pipeline里面配置很多「Middleware」。系統(tǒng)會將HttpContext,依序傳遞給Pipeline里的Middleware去處理。每個(gè)Middleware會依照自己內(nèi)部的程序邏輯,來運(yùn)算處理HttpContext,并且變更HttpContext所封裝的對象內(nèi)容。

ASP.NET Core在收到經(jīng)由Middleware處理完畢的HttpContext之后,就會取出其中所封裝的HttpResponse對象。然后依照這個(gè)HttpResponse對象,來建立從「服務(wù)器回傳」的HTTP Response封包內(nèi)容。

ASP.NET Core經(jīng)由上述的系統(tǒng)結(jié)構(gòu),完成HTTP Request封包輸入、HTTP Response封包輸出的工作流程。

開發(fā)

在這個(gè)范例里,Middleware透過實(shí)做Invoke方法,來提供自己所封裝的程序邏輯。

public class HelloWorldMiddleware
{
    // Fields
    private readonly RequestDelegate _next;

    // Constructors
    public HelloWorldMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Methods
    public Task Invoke(HttpContext context)
    {
        // Response
        context.Response.WriteAsync("Hello World!");

        // Return
        return Task.CompletedTask;
    }
}

在實(shí)做Middleware.Invoke方法的時(shí)候,開發(fā)人員可以透過HttpContext.Request,來取得從「瀏覽器傳入」的HTTP Request封包內(nèi)容。在下列的范例程序代碼里,就是透過HttpContext.Request的Path、QueryString兩個(gè)屬性,來分別取得HTTP Request封包的URL Path與QueryString。

public class HelloWorldMiddleware
{
    // Fields
    private readonly RequestDelegate _next;

    // Constructors
    public HelloWorldMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Methods
    public Task Invoke(HttpContext context)
    {
        // Request
        string path = context.Request.Path.ToString();
        string queryString = context.Request.QueryString.ToString();
        string message = string.Format("path={0}, queryString={1}", path, queryString);

        // Response
        context.Response.WriteAsync(message);

        // Return
        return Task.CompletedTask;
    }
}

同樣在實(shí)做Middleware.Invoke方法的時(shí)候,開發(fā)人員可以透過HttpContext.Response,來設(shè)定從「服務(wù)器回傳」的HTTP Response封包內(nèi)容。在下列的范例程序代碼里,就是透過HttpContext.Response的WriteAsync方法、StatusCode屬性,來分別設(shè)定HTTP Response封包的Content與StatusCode。

public class HelloWorldMiddleware
{
    // Fields
    private readonly RequestDelegate _next;

    // Constructors
    public HelloWorldMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Methods
    public Task Invoke(HttpContext context)
    {
        // Response
        context.Response.StatusCode = 404;
        context.Response.WriteAsync("Not Found");

        // Return
        return Task.CompletedTask;
    }
}

而在實(shí)做Middleware.Invoke方法的時(shí)候,如果程序代碼里發(fā)生了預(yù)期之外的Exception。ASP.NET Core預(yù)設(shè)會使用「500 Internal Server Error」,這個(gè)StatusCode來通報(bào)系統(tǒng)內(nèi)部發(fā)生異常。 在下列的范例程序代碼里,就是直接拋出一個(gè)例外錯(cuò)誤,交由ASP.NET Core的錯(cuò)誤處理機(jī)制去處理。

public class HelloWorldMiddleware
{
    // Fields
    private readonly RequestDelegate _next;

    // Constructors
    public HelloWorldMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Methods
    public Task Invoke(HttpContext context)
    {
        // Exception
        throw new Exception();

        // Return
        return Task.CompletedTask;
    }
}

建立Middleware的時(shí)候,開發(fā)人員可以透過建構(gòu)子所傳入的RequestDelegate,來參考到Pipeline里的下一個(gè)Middleware。透過調(diào)用RequestDelegate,就可以調(diào)用Pipeline里的下一個(gè)Middleware的Invoke方法。在下列的范例程序代碼里,就是透過調(diào)用RequestDelegate,來調(diào)用Pipeline里的下一個(gè)Middleware的Invoke方法,藉此串接其他Middleware的程序邏輯。

public class HelloWorldMiddleware
{
    // Fields
    private readonly RequestDelegate _next;

    // Constructors
    public HelloWorldMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Methods
    public async Task Invoke(HttpContext context)
    {
        // Do Something 01
        //....

        // Next
        await _next.Invoke(context);

        // Do Something 02
        // ...
    }
}

到此,相信大家對“ASP.NET Core的Middleware怎么使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站標(biāo)題:ASP.NETCore的Middleware怎么使用
當(dāng)前路徑:http://weahome.cn/article/jdhdpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部