欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1, Startup 類

ASP.NET Core 應(yīng)用使用Startup類,按照約定命名為Startup。Startup類:

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

當(dāng)應(yīng)用啟動時,運行時調(diào)用ConfigureServicesConfigure 。

Startup 方法體如下

public class Startup
{
    // 使用此方法向容器添加服務(wù)
    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 定義用于配置應(yīng)用請求管道的類,ASP.NET Core 請求管道包含一系列請求委托,依次調(diào)用。

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

http://www.dbjr.com.cn/article/234554.htm

http://www.dbjr.com.cn/article/234557.htm

常見中間件順序

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

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

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

3,中間件

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

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

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

對這一部分的內(nèi)容可以參考

http://www.dbjr.com.cn/article/234554.htm

http://www.dbjr.com.cn/article/234557.htm

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

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)錯誤跳轉(zhuǎn)到 /Error 頁面
                app.UseHsts();    //在文章后面的第39行可以看到解釋
            }

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

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

可以直接使用 app.Use_______ 形式,直接使用內(nèi)置中間件

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

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

Properties(性質(zhì))

ApplicationServices

獲取或設(shè)置提供對應(yīng)用程序服務(wù)容器的訪問的 IServiceProvider 提供程序

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

可以參考 http://www.dbjr.com.cn/article/234560.htm

Properties

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

Properties 是類型為 IDictionary<string,object>

ServerFeatures

獲取應(yīng)用程序服務(wù)器提供的HTTP特性集

點擊 IFeatureCollection 詳細了解

Methods(方法)

Build()

建立此應(yīng)用程序使用的委托來處理HTTP請求

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

New()

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

Use(Func<RequestDelegate,RequestDelegate>)

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

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

使用方法 app._______

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

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

UseRequestLocalization(IApplicationBuilder)

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

UseRequestLocalization(IApplicationBuilder, RequestLocalizationOptions)

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

UseRequestLocalization(IApplicationBuilder, Action<RequestLocalizationOptions>)

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

UseRequestLocalization(IApplicationBuilder, String[])

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

UseAuthentication(IApplicationBuilder)

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

UseBrowserLink(IApplicationBuilder)

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

筆者注:

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

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應(yīng)用程序管道以允許跨域請求

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

UseCors(IApplicationBuilder, Action<CorsPolicyBuilder>)

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

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

UseCors(IApplicationBuilder, String)

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

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

UseDefaultFiles(IApplicationBuilder)

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

UseDefaultFiles(IApplicationBuilder, DefaultFilesOptions)

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

  筆者注:

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

    返回 IApplicationBuilder

UseDefaultFiles(IApplicationBuilder, String)

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

  筆者注:

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

    返回 IApplicationBuilder

UseDeveloperExceptionPage(IApplicationBuilder)

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

UseDeveloperExceptionPage(IApplicationBuilder, DeveloperExceptionPageOptions)

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

UseDirectoryBrowser(IApplicationBuilder)

在當(dāng)前路徑上啟用目錄瀏覽

筆者注:

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

UseDirectoryBrowser(IApplicationBuilder, DirectoryBrowserOptions)

在當(dāng)前路徑上啟用目錄瀏覽,同上

UseDirectoryBrowser(IApplicationBuilder, String)

在當(dāng)前路徑上啟用目錄瀏覽,同上

UseExceptionHandler(IApplicationBuilder)

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

UseExceptionHandler(IApplicationBuilder, ExceptionHandlerOptions)

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

UseExceptionHandler(IApplicationBuilder, Action<IApplicationBuilder>)

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

UseExceptionHandler(IApplicationBuilder, String)

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

UseFacebookAuthentication(IApplicationBuilder)

使用FaceBook身份認證

UseFacebookAuthentication(IApplicationBuilder, FacebookOptions)

使用FaceBook身份認證

UseFileServer(IApplicationBuilder)

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

UseFileServer(IApplicationBuilder, FileServerOptions)

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

UseFileServer(IApplicationBuilder, Boolean)

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

UseFileServer(IApplicationBuilder, String)

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

UseForwardedHeaders(IApplicationBuilder)

轉(zhuǎn)發(fā)代理到當(dāng)前請求報頭

UseForwardedHeaders(IApplicationBuilder, ForwardedHeadersOptions)

轉(zhuǎn)發(fā)代理到當(dāng)前請求報頭

UseGoogleAuthentication(IApplicationBuilder)

使用 Google 進行身份認證

UseGoogleAuthentication(IApplicationBuilder, GoogleOptions)

使用 Google 進行身份認證

UseHostFiltering(IApplicationBuilder)

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

UseHsts(IApplicationBuilder)

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

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ù)給定的預(yù)測結(jié)果對請求流水線進行分支

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應(yīng)用時,就已經(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響應(yīng)的中間件

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)

使管道短路

筆者注:

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

UseSession(IApplicationBuilder)

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

UseSession(IApplicationBuilder, SessionOptions)

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

UseSignalR(IApplicationBuilder, Action<HubRouteBuilder>)

添加 SignalR 到請求管道中

UseSpa(IApplicationBuilder, Action<ISpaBuilder>)

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

UseStaticFiles(IApplicationBuilder)

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

UseStaticFiles(IApplicationBuilder, StaticFileOptions)

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

UseStaticFiles(IApplicationBuilder, String)

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

UseStatusCodePages(IApplicationBuilder)

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

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

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

UseMiddleware(IApplicationBuilder, Type, Object[])

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

UseMiddleware<TMiddleware>(IApplicationBuilder, Object[])

將一個中間件添加到應(yīng)用程序的請求管道中,注意與上面的區(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服務(wù)

UseWebSockets(IApplicationBuilder, WebSocketOptions)

WebSockets服務(wù)

UseWelcomePage(IApplicationBuilder)

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

UseWelcomePage(IApplicationBuilder, WelcomePageOptions)

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

UseWelcomePage(IApplicationBuilder, PathString)

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

UseWelcomePage(IApplicationBuilder, String)

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

UseSpaStaticFiles(IApplicationBuilder)

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

UseSpaStaticFiles(IApplicationBuilder, StaticFileOptions)

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

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

相關(guān)文章

  • ASP.NET?Core基礎(chǔ)之Startup類

    ASP.NET?Core基礎(chǔ)之Startup類

    這篇文章介紹了ASP.NET?Core基礎(chǔ)之Startup類,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • ASP.NET?Core開發(fā)環(huán)境安裝配置

    ASP.NET?Core開發(fā)環(huán)境安裝配置

    這篇文章介紹了ASP.NET?Core開發(fā)環(huán)境安裝配置,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • 使用Docker部署ASP.NET?Core程序

    使用Docker部署ASP.NET?Core程序

    這篇文章介紹了使用Docker部署ASP.NET?Core程序的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • .NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊

    .NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊

    本文詳細講解了.NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • asp.net Ajax之無刷新評論介紹

    asp.net Ajax之無刷新評論介紹

    asp.net Ajax之無刷新評論介紹;需要的朋友可以參考下
    2012-11-11
  • WPF框架Prism中導(dǎo)航Navigation用法介紹

    WPF框架Prism中導(dǎo)航Navigation用法介紹

    這篇文章介紹了WPF框架Prism中導(dǎo)航Navigation的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • ASP.NET中 Panel 控件的使用方法

    ASP.NET中 Panel 控件的使用方法

    Panel 控件用作其它控件的容器,其實Panel本質(zhì)就是一個DIV,本文主要介紹Panel控件的使用方法。
    2016-04-04
  • .NET中的字符串駐留池介紹

    .NET中的字符串駐留池介紹

    這篇文章介紹了.NET中的字符串駐留池,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • ASP.NET?Core命名空間System.Text.Encodings.Web介紹

    ASP.NET?Core命名空間System.Text.Encodings.Web介紹

    這篇文章介紹了ASP.NET?Core命名空間System.Text.Encodings.Web,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • WPF框架Prism中模塊Module用法

    WPF框架Prism中模塊Module用法

    這篇文章介紹了WPF框架Prism中模塊Module的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02

最新評論