国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET core 中的Kestrel 服務(wù)器

這篇具有很好參考價(jià)值的文章主要介紹了.NET core 中的Kestrel 服務(wù)器。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是Kestrel?

Kestrel 是一個(gè)跨平臺的Web服務(wù)器,會(huì)默認(rèn)在ASP.NET Core 項(xiàng)目模板中對其進(jìn)行配置。未使用 IIS 托管時(shí),ASP.NET Core 項(xiàng)目模板默認(rèn)使用 Kestrel。

Kestrel 的功能包括:

  • 跨平臺:Kestrel 是可在 Windows、Linux 和 macOS 上運(yùn)行的跨平臺 Web 服務(wù)器。
  • 高性能:Kestrel 經(jīng)過優(yōu)化,可有效處理大量并發(fā)連接。
  • 輕量級:它經(jīng)過優(yōu)化,可在資源受限的環(huán)境(如容器和邊緣設(shè)備)中運(yùn)行。
  • 強(qiáng)化了安全性:Kestrel支持 HTTPS 并經(jīng)過強(qiáng)化可抵御 Web 服務(wù)器漏洞。
  • 寬協(xié)議支持:Kestrel 支持常見的 Web 協(xié)議,包括:
    • HTTP/1.1、HTTP/2?和?HTTP/3
    • WebSockets
  • 與 ASP.NET Core 集成:與其他 ASP.NET Core 組件(例如中間件管道、依賴項(xiàng)注入和配置系統(tǒng))無縫集成。
  • 靈活工作負(fù)載:Kestrel 支持許多工作負(fù)載:
    • ASP.NET 應(yīng)用框架,例如最小 API、MVC、Razor 頁、SignalR、Blazor 和 gRPC。
    • 使用?YARP?生成反向代理。
  • 擴(kuò)展性:通過配置、中間件和自定義傳輸自定義 Kestrel。
  • 性能診斷:Kestrel 提供內(nèi)置的性能診斷功能,例如日志記錄和指標(biāo)。

在下面的模板生成的?Program.cs?中,WebApplication.CreateBuilder?方法在內(nèi)部調(diào)用?UseKestrel:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

一、終結(jié)點(diǎn)配置

ASP.NET Core 項(xiàng)目配置為綁定到 5000-5300 之間的隨機(jī) HTTP 端口和 7000-7300 之間的隨機(jī) HTTPS 端口。 所選端口存儲在生成的?Properties/launchSettings.json?文件中,開發(fā)人員可以對其進(jìn)行修改。?launchSetting.json?文件僅用于本地開發(fā)。

如果沒有終結(jié)點(diǎn)配置,則 Kestrel 綁定到?http://localhost:5000。

kestrel 支持http1.1 http2.0,c#,.netcore,服務(wù)器,運(yùn)維,Kestres

在 appsettings.json 中配置終結(jié)點(diǎn)

Kestrel 可以從?IConfiguration?實(shí)例加載終結(jié)點(diǎn)。 默認(rèn)情況下,Kestrel 配置從?Kestrel?部分加載,終結(jié)點(diǎn)在?Kestrel:Endpoints?中配置:

{
  "Kestrel": {
    "Endpoints": {
      "MyHttpEndpoint": {
        "Url": "http://localhost:8080"
      }
    }
  }
}

上面的示例:

  • 使用?appsettings.json?作為配置源。 但是,可以使用任何?IConfiguration?源。
  • 在端口 8080 上添加名為?MyHttpEndpoint?的終結(jié)點(diǎn)。

在代碼中配置終結(jié)點(diǎn)

KestrelServerOptions?提供用于在代碼中配置終結(jié)點(diǎn)的方法:

  • Listen
  • ListenLocalhost
  • ListenAnyIP
  • ListenUnixSocket
  • ListenNamedPipe

如果同時(shí)使用?Listen?和?UseUrls?API,Listen?終結(jié)點(diǎn)將覆蓋?UseUrls?終結(jié)點(diǎn)。

Listen、ListenLocalhost?和?ListenAnyIP?方法綁定到 TCP 套接字:

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel((context, serverOptions) =>
{
    serverOptions.Listen(IPAddress.Loopback, 5000);
    serverOptions.Listen(IPAddress.Loopback, 5001, listenOptions =>
    {
        listenOptions.UseHttps("testCert.pfx", "testPassword");
    });
});

上面的示例:

  • 配置偵聽端口 5000 和 5001 的終結(jié)點(diǎn)。
  • 使用?ListenOptions?上的?UseHttps?擴(kuò)展方法為終結(jié)點(diǎn)配置 HTTPS。 有關(guān)詳細(xì)信息,請參閱在代碼中配置 HTTPS。

在 Windows 上,可以使用?New-SelfSignedCertificate?PowerShell cmdlet?創(chuàng)建自簽名證書。 有關(guān)不受支持的示例,請參閱?UpdateIISExpressSSLForChrome.ps1。

在 macOS、Linux 和 Windows 上,可以使用?OpenSSL?創(chuàng)建證書。

二、配置 HTTPS

Kestrel 支持使用 HTTPS 保護(hù)終結(jié)點(diǎn)。 通過 HTTPS 發(fā)送的數(shù)據(jù)使用傳輸層安全性 (TLS)?進(jìn)行加密,以提高在客戶端和服務(wù)器之間傳輸?shù)臄?shù)據(jù)的安全性。

HTTPS 需要 TLS 證書。 TLS 證書存儲在服務(wù)器上,并將 Kestrel 配置為使用該證書。 應(yīng)用可以在本地開發(fā)環(huán)境中使用?ASP.NET Core HTTPS 開發(fā)證書。 開發(fā)證書未安裝在非開發(fā)環(huán)境中。 在生產(chǎn)環(huán)境中,必須顯式配置 TLS 證書。 至少必須提供默認(rèn)證書。

配置 HTTPS 和 TLS 證書的方式取決于終結(jié)點(diǎn)的配置方式:

  • 如果?URL 前綴或僅指定端口用于定義終結(jié)點(diǎn),則僅當(dāng) HTTPS 終結(jié)點(diǎn)配置中提供了默認(rèn)證書時(shí),才能使用 HTTPS。 可以使用以下選項(xiàng)之一配置默認(rèn)證書:
  • 在 appsettings.json 中配置 HTTPS
  • 在代碼中配置 HTTPS

在 appsettings.json 中配置 HTTPS

Kestrel 可以使用默認(rèn) HTTPS 應(yīng)用設(shè)置配置架構(gòu)。 從磁盤上的文件或從證書存儲中配置多個(gè)終結(jié)點(diǎn),包括要使用的 URL 和證書。

任何未指定證書的 HTTPS 終結(jié)點(diǎn)(下例中的?HttpsDefaultCert)會(huì)回退至在?Certificates:Default?下定義的證書或開發(fā)證書。

以下示例適用于?appsettings.json,但可以使用任何配置源:

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5000"
      },
      "HttpsDefaultCert": {
        "Url": "https://localhost:5004"
      }
    }
  }
}

在代碼中配置 HTTPS

上面已經(jīng)介紹過,使用?Listen?API 時(shí),ListenOptions?上的?UseHttps?擴(kuò)展方法可用于配置 HTTPS。

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel((context, serverOptions) =>
{
    serverOptions.Listen(IPAddress.Loopback, 5000);
    serverOptions.Listen(IPAddress.Loopback, 5001, listenOptions =>
    {
        listenOptions.UseHttps("testCert.pfx", "testPassword");
    });
});

ListenOptions.UseHttps?參數(shù):

  • filename?是證書文件的路徑和文件名,關(guān)聯(lián)包含應(yīng)用內(nèi)容文件的目錄。
  • password?是訪問 X.509 證書數(shù)據(jù)所需的密碼。
  • configureOptions?是配置?HttpsConnectionAdapterOptions?的?Action。 返回?ListenOptions。
  • storeName?是從中加載證書的證書存儲。
  • subject?是證書的主題名稱。
  • allowInvalid?指示是否存在需要留意的無效證書,例如自簽名證書。
  • location?是從中加載證書的存儲位置。
  • serverCertificate?是 X.509 證書。

有關(guān)?UseHttps?重載的完整列表,請參閱?UseHttps。

三、為Kestrel 服務(wù)器配置選項(xiàng)

上面介紹過,要配置 Kestrel 配置選項(xiàng),可以在?Program.cs?中調(diào)用?ConfigureKestrel:

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    // ...
});

還可以從?appsettings.json?或?appsettings.{Environment}.json?文件配置?Kestrel :

{
  "Kestrel": {
    "Limits": {
      "MaxConcurrentConnections": 100,
      "MaxConcurrentUpgradedConnections": 100
    },
    "DisableStringReuse": true
  }
}

常用配置:

保持活動(dòng)狀態(tài)超時(shí)

KeepAliveTimeout?獲取或設(shè)置保持活動(dòng)狀態(tài)超時(shí):

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
});

將調(diào)試器附加到 Kestrel 進(jìn)程時(shí),不會(huì)強(qiáng)制實(shí)施此超時(shí)限制。

客戶端最大連接數(shù)

MaxConcurrentConnections?獲取或設(shè)置最大打開的連接數(shù):

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MaxConcurrentConnections = 100;
});

MaxConcurrentUpgradedConnections?獲取或設(shè)置最大打開、升級的連接數(shù):

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
});

升級的連接是已從 HTTP 切換到另一個(gè)協(xié)議(如 WebSocket)的連接。 連接升級后,不會(huì)計(jì)入?MaxConcurrentConnections?限制。

請求正文最大大小

MaxRequestBodySize?獲取或設(shè)置允許的請求正文的最大大小(以字節(jié)為單位)。

以下示例為所有請求配置?MaxRequestBodySize

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MaxRequestBodySize = 100_000_000;
});

在 ASP.NET Core MVC 應(yīng)用中替代限制的推薦方法是在操作方法上使用?RequestSizeLimitAttribute?屬性:

[RequestSizeLimit(100_000_000)]
public IActionResult Get()

以下示例在一個(gè)自定義中間件中使用?IHttpMaxRequestBodySizeFeature?為特定請求配置?MaxRequestBodySize

app.Use(async (context, next) =>
{
    var httpMaxRequestBodySizeFeature = context.Features.Get<IHttpMaxRequestBodySizeFeature>();

    if (httpMaxRequestBodySizeFeature is not null)
        httpMaxRequestBodySizeFeature.MaxRequestBodySize = 10 * 1024;

    // ...

    await next(context);
});

如果應(yīng)用在開始讀取請求后嘗試配置請求的限制,則會(huì)引發(fā)異常。 使用?IHttpMaxRequestBodySizeFeature.IsReadOnly?屬性檢查設(shè)置?MaxRequestBodySize?屬性是否安全。

請求正文最小數(shù)據(jù)速率

Kestrel 每秒檢查一次數(shù)據(jù)是否以指定的速率(字節(jié)/秒)傳入。 如果速率低于最小值,則連接超時(shí)。寬限期是 Kestrel 允許客戶端將其發(fā)送速率提升到最小值的時(shí)間量。 在此期間不會(huì)檢查速率。 寬限期有助于避免最初由于 TCP 慢啟動(dòng)而以較慢速率發(fā)送數(shù)據(jù)的連接中斷。 最小速率也適用于響應(yīng)。

MinRequestBodyDataRate?獲取或設(shè)置請求正文的最小數(shù)據(jù)速率(以字節(jié)/秒為單位)。?MinResponseDataRate?獲取或設(shè)置響應(yīng)最小數(shù)據(jù)速率(以字節(jié)/秒為單位)。

以下示例為所有請求配置?MinRequestBodyDataRate?和?MinResponseDataRate

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MinRequestBodyDataRate = new MinDataRate(
        bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
    serverOptions.Limits.MinResponseDataRate = new MinDataRate(
        bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));
});

請求標(biāo)頭超時(shí)

RequestHeadersTimeout?獲取或設(shè)置服務(wù)器接收請求頭所需的最大時(shí)間量:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(1);
});

HTTP/2 限制

該部分中的限制在?KestrelServerLimits.Http2?上設(shè)置。

每個(gè)連接的最大流

MaxStreamsPerConnection?限制每個(gè) HTTP/2 連接的并發(fā)請求流的數(shù)量。 拒絕過多的流:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.Http2.MaxStreamsPerConnection = 100;
});

標(biāo)題表大小

HeaderTableSize?限制了服務(wù)器上 HPACK 編碼器與解碼器可以使用的標(biāo)頭壓縮表的大小(以八進(jìn)制數(shù)表示)。 HPACK 解碼器為 HTTP/2 連接解壓縮 HTTP 標(biāo)頭:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.Http2.HeaderTableSize = 4096;
});

最大幀大小

MaxFrameSize?指示允許接收的最大幀有效負(fù)載的大?。ㄒ园诉M(jìn)制數(shù)表示):

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.Http2.MaxFrameSize = 16_384;
});

最大請求標(biāo)頭大小

MaxRequestHeaderFieldSize?指示請求頭字段序列的最大允許大小。 此限制適用于名稱和值序列的壓縮和未壓縮表示形式:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.Http2.MaxRequestHeaderFieldSize = 8192;
});

初始連接窗口大小

InitialConnectionWindowSize?表示服務(wù)器一次愿意接收和緩沖多少請求正文數(shù)據(jù),這些數(shù)據(jù)在每個(gè)連接的所有請求(流)中匯總:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.Http2.InitialConnectionWindowSize = 131_072;
});

請求也受?InitialStreamWindowSize?限制。

初始流窗口大小

InitialStreamWindowSize?表示服務(wù)器愿意為每個(gè)流一次接收和緩沖多少請求正文數(shù)據(jù):

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.Http2.InitialStreamWindowSize = 98_304;
});

請求也受?InitialConnectionWindowSize?限制。文章來源地址http://www.zghlxwxcb.cn/news/detail-839127.html

到了這里,關(guān)于.NET core 中的Kestrel 服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • linux 服務(wù)器利用寶塔面板部署.net 6(.net core)服務(wù)端程序圖文步驟

    linux 服務(wù)器利用寶塔面板部署.net 6(.net core)服務(wù)端程序圖文步驟

    隨著.net core 跨平臺技術(shù)的興起,微軟.net擁抱云原生,支持跨平臺,可以使基于.net core技術(shù)的服務(wù)端程序輕松移植到基于Linux的云服務(wù)器上,本文以圖文的方式介紹如何利用阿里云輕量應(yīng)用服務(wù)器安裝寶塔面板部署基于.net core的后端服務(wù)器接口程序并正常運(yùn)行。 步驟 準(zhǔn)備一臺

    2024年02月14日
    瀏覽(91)
  • 將 .net core 項(xiàng)目部署到 Linux服務(wù)器

    目錄 1、前言 2、安裝 .NET SDK 或 .NET 運(yùn)行時(shí) 3、創(chuàng)建數(shù)據(jù)庫 4、發(fā)布項(xiàng)目到Linux環(huán)境 5、配置Nigix 6、Nginx配置Https 7、安裝Supervisor 1、前言 部署服務(wù)器:阿里云的CentOS 7.6 64位 發(fā)布項(xiàng)目:.Net Core 5.0 數(shù)據(jù)庫:MySql 5.8? 其他:Nginx,Supervisor 2、安裝 .NET SDK 或 .NET 運(yùn)行時(shí) 參考官網(wǎng)網(wǎng)址

    2024年02月04日
    瀏覽(23)
  • 如何部署ASP.NET Core到Linux服務(wù)器

    我們開發(fā)的最終目的,是將開發(fā)后的東西發(fā)布網(wǎng)絡(luò)上,以便自己及其他人使用。 本篇博客介紹如果在 linux 上部署 ASP.NET Core應(yīng)用,使用nginx+systemd 來管理我們的應(yīng)用。 Ubuntu 20.04 Nginx .NET SDK 或 Runtime 安裝Nginx 安裝.NET 配置文件 nginx默認(rèn)配置會(huì)加載 /etc/nginx/sites-enabled 中的網(wǎng)站,

    2024年02月11日
    瀏覽(95)
  • 【ASP.NET Core】使用SignalR推送服務(wù)器日志

    【ASP.NET Core】使用SignalR推送服務(wù)器日志

    一個(gè)多月前接手了一個(gè)產(chǎn)線機(jī)器人項(xiàng)目,上位機(jī)以讀寫寄存器的方式控制機(jī)器人,服務(wù)器就是用 ASP.NET Core 寫的 Web API。由于前一位開發(fā)者寫的代碼質(zhì)量問題,導(dǎo)致上位機(jī)需要16秒才能啟動(dòng)。經(jīng)過我近一個(gè)月的改造,除了保留業(yè)務(wù)邏輯代碼,其他的基本重寫。如今上位機(jī)的啟動(dòng)

    2024年02月03日
    瀏覽(23)
  • 【服務(wù)器】ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)

    【服務(wù)器】ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)

    簡單幾步實(shí)現(xiàn)本地ASP.Net.Core web 站點(diǎn)結(jié)合cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問 1. 創(chuàng)建站點(diǎn) *環(huán)境搭建,這邊測試,使用.NET 6.0 SDK,可以點(diǎn)擊跳轉(zhuǎn)到官網(wǎng)下載,下載后安裝即可. 安裝完成后,進(jìn)入到某個(gè)文件夾,打開powershell執(zhí)行下面命令,創(chuàng)建新的 Web 應(yīng)用,名稱叫:aspnetcoreapp 2. 運(yùn)行站點(diǎn) 信任開

    2024年02月11日
    瀏覽(24)
  • asp.net core 項(xiàng)目從本地部署到遠(yuǎn)程云服務(wù)器

    asp.net core 項(xiàng)目從本地部署到遠(yuǎn)程云服務(wù)器

    今天向大家詳細(xì)介紹一下,如何將一個(gè).net core項(xiàng)目部署到遠(yuǎn)程云服務(wù)器,我的服務(wù)器鏡像為 window server 2019. 1.安裝IIS 首先在服務(wù)器上安裝IIS(我的是最新的iis10),我已經(jīng)安裝完畢,這個(gè)安裝操作比較簡單,自行谷歌。 安裝完成后會(huì)看到下面的界面: 2.安裝web deploy程序 該程序的功能: 它

    2023年04月22日
    瀏覽(22)
  • Kestrel封裝在Winform中

    Kestrel封裝在Winform中

    另外一篇文章 Kestrel封裝在WindowService中(.net5,.net6,.net7三個(gè)版本的介紹) 在很久以前為了滿足需求,已經(jīng)開發(fā)了一款winform程序,并且是4.6.1版本的,如今為了和第三方對接,需要在這個(gè)winform上提供WebAPI的接口。因?yàn)榈谌降某绦蚴且环輿]有源碼的程序。 網(wǎng)上有很多自寫web服

    2024年02月04日
    瀏覽(41)
  • 在 C#和ASP.NET Core中創(chuàng)建 gRPC 客戶端和服務(wù)器

    在 C#和ASP.NET Core中創(chuàng)建 gRPC 客戶端和服務(wù)器

    gRPC 是一種可以跨語言運(yùn)行的現(xiàn)代高性能遠(yuǎn)程過程調(diào)用 (RPC) 框架。gRPC 實(shí)際上已經(jīng)成為 RPC 框架的行業(yè)標(biāo)準(zhǔn),Google 內(nèi)外的組織都在使用它來從微服務(wù)到計(jì)算的“最后一英里”(移動(dòng)、網(wǎng)絡(luò)和物聯(lián)網(wǎng))的強(qiáng)大用例。 gRPC是一個(gè)高性能的開源的通用RPC框架,由Google公司開發(fā),支持常

    2024年04月23日
    瀏覽(93)
  • .NET Core(C#)使用Titanium.Web.Proxy實(shí)現(xiàn)Http(s)代理服務(wù)器監(jiān)控HTTP請求

    關(guān)于Titanium.Web.Proxy詳細(xì)信息可以去這里仔細(xì)看看,這里只記錄簡單用法 NuGet直接獲取Titanium.Web.Proxy 配置 與其說是配置,不如就說這一部分就是未來你需要使用的部分,想知道具體每個(gè)部分是干什么的就去看原文鏈接 全放過來太占地方 最后的 Console.Read(); 是一個(gè)等待函數(shù),你

    2024年02月09日
    瀏覽(24)
  • ASP.NET Core應(yīng)用程序在IIS服務(wù)器上的運(yùn)行環(huán)境介紹和下載安裝(超詳細(xì))

    ASP.NET Core應(yīng)用程序在IIS服務(wù)器上的運(yùn)行環(huán)境介紹和下載安裝(超詳細(xì))

    要想在 IIS 上成功運(yùn)行 ASP.NET Core 應(yīng)用程序,我們需要有ASP.NET Core 運(yùn)行時(shí)和ASP.NET Core Module。而在這里我們僅需要下載ASP.NET Core Hosting Bundle 即可,這是為什么呢? 想了解的可以看文章末節(jié)的介紹。 ASP.NET 核心運(yùn)行時(shí)使你能夠運(yùn)行現(xiàn)有的 Web/服務(wù)器應(yīng)用程序。 在 Windows 上,我們

    2024年02月11日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包