最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET?Core中Startup類、Configure()方法及中間件詳解

 更新時間:2022年01月13日 17:49:37   作者:癡者工良  
本文詳細講解了ASP.NET?Core中Startup類、Configure()方法及中間件,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

ASP.NET Core 程序啟動過程如下

1, Startup 類

ASP.NET Core 應用使用Startup類,按照約定命名為Startup。Startup類:

  • 可選擇性地包括ConfigureServices方法以配置應用的服務。
  • 必須包括Configure方法以創(chuàng)建應用的請求處理管道。

當應用啟動時,運行時調用ConfigureServicesConfigure 。

Startup 方法體如下

public class Startup
{
    // 使用此方法向容器添加服務
    public void ConfigureServices(IServiceCollection services)
    {
        ...
    }

    // 使用此方法配置HTTP請求管道
    public void Configure(IApplicationBuilder app)
    {
        ...
    }
}

這篇文章只說Configure

2,Configure() 方法

Configure是一個在

命名空間Microsoft.AspNetCore.Hosting定義的

抽象類 ↓↓↓

public abstract void Configure (Microsoft.AspNetCore.Builder.IApplicationBuilder app);

IApplicationBuilder

IApplicationBuilder 定義用于配置應用請求管道的類,ASP.NET Core 請求管道包含一系列請求委托,依次調用。

不清楚 Asp.Net Core 請求管道、中間件的讀者,對這一部分的內容可以參考

http://www.fzitv.net/article/234554.htm

http://www.fzitv.net/article/234557.htm

常見中間件順序

  • 異常/錯誤處理
  • HTTP 嚴格傳輸安全協(xié)議
  • HTTPS 重定向
  • 靜態(tài)文件服務器
  • Cookie 策略實施
  • 身份驗證
  • 會話
  • MVC

你可以添加其它參數(shù) 對 Configure 方法 進行重寫,如IHostingEnvironment 、ILoggerFactory

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ... ... , ... ...)
        {
        ... ...
        }

3,中間件

Configure 方法 使用IApplicationBuilder 來使用中間件

有 Use 、Map、Run 三種使用方式

  • Use 使用中間件配置請求管道
  • Map 管道分支
  • Run 管道短路

對這一部分的內容可以參考

http://www.fzitv.net/article/234554.htm

http://www.fzitv.net/article/234557.htm

Asp.Net Core 內置很多中間件,用戶可以直接使用,將在文章后面介紹

4,使用中間件

默認創(chuàng)建 Asp.Net Core Mvc 程序時,會生成如下模板(Asp.Net Core 2.1)

在文章后面或詳細列出所有中間件并加以說明

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();    //是否開發(fā)環(huán)境
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");  //出現(xiàn)錯誤跳轉到 /Error 頁面
                app.UseHsts();    //在文章后面的第39行可以看到解釋
            }

            app.UseHttpsRedirection();    //把 HTTP 重定向到 HTTPS
            app.UseStaticFiles();       //使用靜態(tài)文件
            app.UseCookiePolicy();      //與 Cookie 有關

            app.UseMvc(routes =>       //使用 MVP 頁面
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

可以直接使用 app.Use_______ 形式,直接使用內置中間件

5,Configure 方法 的參數(shù) IApplicationBuilder

Configure 方法配置請求管道使用了 IApplicationBuilder,下面將詳細列出IApplicationBuilder 默認的方法、參數(shù)、特性等。

Properties(性質)

ApplicationServices

獲取或設置提供對應用程序服務容器的訪問的 IServiceProvider 提供程序

IServiceProvider : 定義用于檢索服務對象的機制,即為其他對象提供自定義支持的對象

可以參考 http://www.fzitv.net/article/234560.htm

Properties

獲取可用于在中間件之間共享數(shù)據(jù)的 鍵/值 集合

Properties 是類型為 IDictionary<string,object>

ServerFeatures

獲取應用程序服務器提供的HTTP特性集

點擊 IFeatureCollection 詳細了解

Methods(方法)

Build()

建立此應用程序使用的委托來處理HTTP請求

Build 是一個 AspNetCore.Http.RequestDelegate 類型的委托

New()

創(chuàng)建一個 IApplicationBuilder 共享 Properties 的 IApplicationBuilder

Use(Func<RequestDelegate,RequestDelegate>)

將中間件委托添加到應用程序的請求管道中,對與自定義的中間件,使用此方法。

6,Extension Methods(拓展方法)--微軟提供的中間件

使用方法 app._______

以下將列出 所有中間件及其重載方法、說明

注意IApplicationBuilder 范圍很廣,包括應用啟動、依賴關系注入、路由、環(huán)境、配置、選項、日志記錄、處理錯誤等。

UseRequestLocalization(IApplicationBuilder)

添加 RequestLocalizationMiddleware 以基于客戶端提供的信息自動設置請求的區(qū)域性信息

UseRequestLocalization(IApplicationBuilder, RequestLocalizationOptions)

添加 RequestLocalizationMiddleware 以基于客戶端提供的信息自動設置請求的區(qū)域性信息

UseRequestLocalization(IApplicationBuilder, Action<RequestLocalizationOptions>)

添加 RequestLocalizationMiddleware 以基于客戶端提供的信息自動設置請求的區(qū)域性信息

UseRequestLocalization(IApplicationBuilder, String[])

添加 RequestLocalizationMiddleware 以基于客戶端提供的信息自動設置請求的區(qū)域性信息

UseAuthentication(IApplicationBuilder)

將 AuthenticationMiddleware 添加到指定的 IApplicationBuilder ,它支持身份驗證功能

UseBrowserLink(IApplicationBuilder)

此方法被調用以在應用程序中啟用瀏覽器鏈接。它注冊了一個方法工廠,為每個請求創(chuàng)建 BrowserLinkMiddleware。

筆者注:

瀏覽器鏈接是Visual Studio中的一項功能,可在開發(fā)環(huán)境和一個或多個Web瀏覽器之間創(chuàng)建通信通道。您可以使用瀏覽器鏈接一次在多個瀏覽器中刷新Web應用程序,這對于跨瀏覽器測試很有用

UseIdentity(IApplicationBuilder)

此方法已過時,將在將來的版本中刪除。推薦的替代方案是使用 UseAuthentication (在列表的第5行)

UseConnections(IApplicationBuilder, Action<ConnectionsRouteBuilder>)

向 IApplicationBuilder 請求執(zhí)行管道添加對 ASP.NET Core 連接處理程序的支持

UseCookieAuthentication(IApplicationBuilder)

已經(jīng)過時,不再推薦使用。官方建議使用 identity 配置(在列表的第5行)

UseCookieAuthentication(IApplicationBuilder, CookieAuthenticationOptions)

已經(jīng)過時,不再推薦使用。官方建議使用 identity 配置(在列表的第5行)

UseCookiePolicy(IApplicationBuilder)

將 CookiePolicyMiddleware 處理程序添加到指定的 IApplicationBuilder,它支持 cookie 策略功能

UseCookiePolicy(IApplicationBuilder, CookiePolicyOptions)

將 CookiePolicyMiddleware 處理程序添加到指定的 IApplicationBuilder,它支持 cookie 策略功能

UseCors(IApplicationBuilder)

將CORS中間件添加到Web應用程序管道以允許跨域請求

這是一個靜態(tài)方法,類型為 Microsoft.AspNetCore.Builder.IApplicationBuilder

UseCors(IApplicationBuilder, Action<CorsPolicyBuilder>)

將CORS中間件添加到Web應用程序管道以允許跨域請求

這是一個靜態(tài)方法,類型為 Microsoft.AspNetCore.Builder.IApplicationBuilder

UseCors(IApplicationBuilder, String)

將CORS中間件添加到Web應用程序管道以允許跨域請求

這是一個靜態(tài)方法,類型為 Microsoft.AspNetCore.Builder.IApplicationBuilder

UseDefaultFiles(IApplicationBuilder)

為給定的請求路徑啟用默認文件映射

UseDefaultFiles(IApplicationBuilder, DefaultFilesOptions)

為給定的請求路徑啟用默認文件映射

  筆者注:

    參數(shù) DefaultFilesOptions 選擇默認文件名的選項,類型為 DefaultFilesOptions

    返回 IApplicationBuilder

UseDefaultFiles(IApplicationBuilder, String)

為給定的請求路徑啟用默認文件映射

  筆者注:

    參數(shù) String為 相對請求路徑

    返回 IApplicationBuilder

UseDeveloperExceptionPage(IApplicationBuilder)

從管道捕獲同步和異步異常實例,并生成HTML錯誤響應

UseDeveloperExceptionPage(IApplicationBuilder, DeveloperExceptionPageOptions)

從管道捕獲同步和異步異常實例,并生成HTML錯誤響應

UseDirectoryBrowser(IApplicationBuilder)

在當前路徑上啟用目錄瀏覽

筆者注:

對于非程序運行目錄或特殊目錄,用戶通過瀏覽器打開該目錄時,會列出目錄內容。

UseDirectoryBrowser(IApplicationBuilder, DirectoryBrowserOptions)

在當前路徑上啟用目錄瀏覽,同上

UseDirectoryBrowser(IApplicationBuilder, String)

在當前路徑上啟用目錄瀏覽,同上

UseExceptionHandler(IApplicationBuilder)

向管道添加中間件,該中間件將捕獲異常、記錄異常并在備用管道中重新執(zhí)行請求。如果響應已經(jīng)啟動,請求將不被重新執(zhí)行

UseExceptionHandler(IApplicationBuilder, ExceptionHandlerOptions)

向管道添加中間件,該中間件將捕獲異常、記錄異常并在備用管道中重新執(zhí)行請求。如果響應已經(jīng)啟動,請求將不被重新執(zhí)行

UseExceptionHandler(IApplicationBuilder, Action<IApplicationBuilder>)

向管道添加中間件,該中間件將捕獲異常、記錄異常并在備用管道中重新執(zhí)行請求。如果響應已經(jīng)啟動,請求將不被重新執(zhí)行

UseExceptionHandler(IApplicationBuilder, String)

向管道添加中間件,該中間件將捕獲異常、記錄異常并在備用管道中重新執(zhí)行請求。如果響應已經(jīng)啟動,請求將不被重新執(zhí)行

UseFacebookAuthentication(IApplicationBuilder)

使用FaceBook身份認證

UseFacebookAuthentication(IApplicationBuilder, FacebookOptions)

使用FaceBook身份認證

UseFileServer(IApplicationBuilder)

為當前目錄中的當前請求路徑啟用所有靜態(tài)文件中間件(目錄瀏覽除外)  --注意四者不同點

UseFileServer(IApplicationBuilder, FileServerOptions)

使給定的選項所有靜態(tài)文件中間件                    --注意四者不同點

UseFileServer(IApplicationBuilder, Boolean)

是否為當前目錄中的當前請求路徑啟用所有靜態(tài)文件中間件(目錄瀏覽除外)  --注意四者不同點

UseFileServer(IApplicationBuilder, String)

為來自同名目錄的給定請求路徑啟用所有靜態(tài)文件中間件(目錄瀏覽除外    --注意四者不同點

UseForwardedHeaders(IApplicationBuilder)

轉發(fā)代理到當前請求報頭

UseForwardedHeaders(IApplicationBuilder, ForwardedHeadersOptions)

轉發(fā)代理到當前請求報頭

UseGoogleAuthentication(IApplicationBuilder)

使用 Google 進行身份認證

UseGoogleAuthentication(IApplicationBuilder, GoogleOptions)

使用 Google 進行身份認證

UseHostFiltering(IApplicationBuilder)

增加了過濾請求允許主機頭的中間件,無效的請求將被拒絕并返回 400 狀態(tài)代碼

UseHsts(IApplicationBuilder)

添加了使用HSTS的中間件,它添加了嚴格的傳輸安全標頭

UseHttpMethodOverride(IApplicationBuilder)

允許傳入的POST請求以頭文件中指定的類型重寫方法類型

UseHttpMethodOverride(IApplicationBuilder, HttpMethodOverrideOptions)

允許傳入POST請求以表單指定的類型重寫方法類型

UseHttpsRedirection(IApplicationBuilder)

添加用于將HTTP請求重定向到HTTPS的中間件。

UseJwtBearerAuthentication(IApplicationBuilder)

UseJwtBearerAuthentication 是過時的認證方案,官方已經(jīng)不推薦使用

UseJwtBearerAuthentication(IApplicationBuilder, JwtBearerOptions)

UseJwtBearerAuthentication 是過時的認證方案,官方已經(jīng)不推薦使用

Map(IApplicationBuilder, PathString, Action<IApplicationBuilder>)

根據(jù)給定的請求路徑的匹配來分支請求管道。如果請求路徑從給定路徑開始,則執(zhí)行分支

MapWhen(IApplicationBuilder, Func<HttpContext,Boolean>, Action<IApplicationBuilder>)

根據(jù)給定的預測結果對請求流水線進行分支

UseMicrosoftAccountAuthentication(IApplicationBuilder)

UseMicrosoftAccountAuthentication 過時,官方不再推薦使用

UseMicrosoftAccountAuthentication(IApplicationBuilder, MicrosoftAccountOptions)

UseMicrosoftAccountAuthentication 過時,官方不再推薦使用

UseMvc(IApplicationBuilder)

將 MVC 添加到 請求執(zhí)行管道中

UseMvc(IApplicationBuilder, Action<IRouteBuilder>)

將 MVC 添加到請求執(zhí)行管道中,并配置路由,使用示例

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

UseMvcWithDefaultRoute(IApplicationBuilder)

使用默認的路由模板

筆者注:

在你創(chuàng)建Mvc應用時,就已經(jīng)默認生成

默認的路由模板格式 {controller=Home}/{action=Index}/{id?} 

使用此中間件的效果等同上一個表格的示例

UseOAuthAuthentication(IApplicationBuilder)

UseOAuthAuthentication 過時,官方不推薦使用

UseOAuthAuthentication(IApplicationBuilder, OAuthOptions)

UseOAuthAuthentication 過時,官方不推薦使用

UseOpenIdConnectAuthentication(IApplicationBuilder)

UseOpenIdConnectAuthentication  過時,官方不推薦使用

UseOpenIdConnectAuthentication(IApplicationBuilder, OpenIdConnectOptions)

UseOpenIdConnectAuthentication  過時,官方不推薦使用

UseResponseCompression(IApplicationBuilder)

添加用于動態(tài)壓縮HTTP響應的中間件

UseRewriter(IApplicationBuilder)

檢查給定URL是否匹配規(guī)則和條件(正則表達式),并修改匹配的HTTP語境。

UseRewriter(IApplicationBuilder, RewriteOptions)

檢查給定URL是否匹配規(guī)則和條件(正則表達式),并修改匹配的HTTP語境

UseRouter(IApplicationBuilder, IRouter)

創(chuàng)建路由規(guī)則并添加到路由表中

UseRouter(IApplicationBuilder, Action<IRouteBuilder>)

創(chuàng)建路由規(guī)則并添加到路由表中

Run(IApplicationBuilder, RequestDelegate)

使管道短路

筆者注:

當管道碰到Run使,無論后面是否還有其它中間件,都會忽略

UseSession(IApplicationBuilder)

添加 Session 以自動啟用應用程序的會話狀態(tài)

UseSession(IApplicationBuilder, SessionOptions)

添加 Session 以自動啟用應用程序的會話狀態(tài)

UseSignalR(IApplicationBuilder, Action<HubRouteBuilder>)

添加 SignalR 到請求管道中

UseSpa(IApplicationBuilder, Action<ISpaBuilder>)

通過返回單頁應用程序(SPA)的默認頁面,處理從中間件鏈中此點開始的所有請求。這個中間件應該放在鏈的末尾,以便其他提供靜態(tài)文件、MVC操作等的中間件優(yōu)先

UseStaticFiles(IApplicationBuilder)

為當前請求路徑啟用靜態(tài)文件服務

UseStaticFiles(IApplicationBuilder, StaticFileOptions)

為當前請求路徑啟用靜態(tài)文件服務

UseStaticFiles(IApplicationBuilder, String)

為當前請求路徑啟用靜態(tài)文件服務

UseStatusCodePages(IApplicationBuilder)

添加具有默認響應處理程序的中間件,該處理程序檢查400和599之間沒有主體時的狀態(tài)代碼,以進行響應

UseStatusCodePages(IApplicationBuilder, StatusCodePagesOptions)

同上

UseStatusCodePages(IApplicationBuilder, Action<IApplicationBuilder>)

同上

UseStatusCodePages(IApplicationBuilder, Func<StatusCodeContext,Task>)

同上

UseStatusCodePages(IApplicationBuilder, String, String)

同上

UseStatusCodePagesWithRedirects(IApplicationBuilder, String)

同上

UseStatusCodePagesWithReExecute(IApplicationBuilder, String, String)

同上

UseTwitterAuthentication(IApplicationBuilder)

使用 Twitter 進行身份認證,官方不再推薦這種過時用法

UseTwitterAuthentication(IApplicationBuilder, TwitterOptions)

使用 Twitter 進行身份認證,官方不再推薦這種過時用法

Use(IApplicationBuilder, Func<HttpContext,Func<Task>,Task>)

將一個中間件委托添加到應用程序的請求管道中

UseMiddleware(IApplicationBuilder, Type, Object[])

將一個中間件添加到應用程序的請求管道中,注意與上面的區(qū)別

UseMiddleware<TMiddleware>(IApplicationBuilder, Object[])

將一個中間件添加到應用程序的請求管道中,注意與上面的區(qū)別

UsePathBase(IApplicationBuilder, PathString)

加中間件,從中間件從請求路徑中提取指定的路徑庫并將其附加到請求路徑庫

UseWhen(IApplicationBuilder, Func<HttpContext,Boolean>, Action<IApplicationBuilder>)

有條件地在請求管道中創(chuàng)建一個分支,并將其重新連接到主管道

UseWebpackDevMiddleware(IApplicationBuilder, WebpackDevMiddlewareOptions)

英文原文如下

Enables Webpack dev middleware support. This hosts an instance of the Webpack compiler in memory in your application so that you can always serve up-to-date Webpack-built resources without having to run the compiler manually. Since the Webpack compiler instance is retained in memory, incremental compilation is vastly faster that re-running the compiler from scratch.

Incoming requests that match Webpack-built files will be handled by returning the Webpack compiler output directly, regardless of files on disk. If compilation is in progress when the request arrives, the response will pause until updated compiler output is ready.

UseWebSockets(IApplicationBuilder)

WebSockets服務

UseWebSockets(IApplicationBuilder, WebSocketOptions)

WebSockets服務

UseWelcomePage(IApplicationBuilder)

添加一個歡迎頁面到請求管道中

UseWelcomePage(IApplicationBuilder, WelcomePageOptions)

添加一個歡迎頁面到請求管道中,可以自己配置歡迎頁面

UseWelcomePage(IApplicationBuilder, PathString)

添加一個歡迎頁面到請求管道中,自定義歡迎頁面的路徑

UseWelcomePage(IApplicationBuilder, String)

添加一個歡迎頁面到請求管道中

UseSpaStaticFiles(IApplicationBuilder)

將應用程序配置為為單頁應用程序(SPA)提供靜態(tài)文件

UseSpaStaticFiles(IApplicationBuilder, StaticFileOptions)

將應用程序配置為為單頁應用程序(SPA)提供靜態(tài)

 到此這篇關于ASP.NET Core中Startup類、Configure()方法及中間件詳解的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

应城市| 霍城县| 民和| 福建省| 陇南市| 和田县| 历史| 北流市| 永仁县| 井研县| 孟连| 蓝田县| 渝北区| 泸定县| 繁昌县| 克东县| 巫山县| 汝阳县| 山东省| 徐汇区| 方山县| 哈密市| 水城县| 六安市| 古交市| 广汉市| 馆陶县| 宝兴县| 桐柏县| 永善县| 土默特左旗| 扎囊县| 兴国县| 馆陶县| 南平市| 奇台县| 左权县| 禹州市| 三原县| 封丘县| 双流县|