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

ASP.NET Core中調(diào)整HTTP請求大小的幾種方法詳解

 更新時(shí)間:2017年12月30日 11:40:19   作者:YOYOFx  
這篇文章主要給大家介紹了關(guān)于在ASP.NET Core中如何調(diào)整HTTP請求大小的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

一、前言

之所以稱ASP.NET Core是一個(gè)Web開發(fā)平臺,源于它具有一個(gè)極具擴(kuò)展性的請求處理管道,我們可以通過這個(gè)管道的定制來滿足各種場景下的HTTP處理需求。ASP. NET Core應(yīng)用的很多特性,比如路由、認(rèn)證、會(huì)話、緩存等,也同時(shí)定制消息處理管道來實(shí)現(xiàn)的。我們甚至可以通過管道定制在ASP.NET Core平臺上創(chuàng)建我們自己的Web框架,實(shí)際上MVC和SingalR這兩個(gè)重要的Web框架也是采用這樣的方式創(chuàng)建的。

HTTP協(xié)議自身的特性決定了任何一個(gè)Web應(yīng)用的工作方式都是監(jiān)聽、接收并處理HTTP請求,并在最終對請求予以響應(yīng),HTTP請求處理是管道式設(shè)計(jì)典型的應(yīng)用場景。我們根據(jù)HTTP請求的處理流程定制出一個(gè)消息處理管道,讓接收到的HTTP請求消息想水一樣流入這個(gè)管道,組成這個(gè)管道的各個(gè)環(huán)節(jié)一次對它作相應(yīng)的處理。處理的結(jié)果同樣轉(zhuǎn)變成消息逆向流入這個(gè)管道進(jìn)行處理,并最終轉(zhuǎn)變成回復(fù)給客戶端的HTTP響應(yīng)。

一般的情況下,我們都無需調(diào)用HTTP請求的大小,只有在上傳一些大文件,或者使用HTTP協(xié)議寫入較大的值時(shí)(如調(diào)用WebService)才可能會(huì)調(diào)用HTTP最大請求值。

在ASP.NET Core 2.0中,它的兩個(gè)宿主服務(wù)器Kestrel和HttpSys默認(rèn)的HTTP最大請求大小為30MB (~28.6 MiB)。

如果當(dāng)HTTP請求值大于這個(gè)默認(rèn)配置時(shí),在執(zhí)行Request.Body.ReadAsync方法時(shí),就會(huì)引發(fā)IOException異常。如果這個(gè)異常未被捕獲,在Kestrel服務(wù)器中輸出HTTP狀態(tài)碼413(Request Entity Too Large), 而在HttpSys 中的HTTP狀態(tài)碼將是500(Internal Server Error)。

二、解決方案

在ASP.NET Core中這個(gè)配置可以基于全局和每次請求進(jìn)行配置。

1.MVC的解決方案

MVC Core中為我們提供了兩種特性配置請求大小:

RequestSizeLimit Attribute,對每個(gè)Action的請求大小進(jìn)行配置。如下調(diào)整MyAction的請求大小值為100,000,000 字節(jié).

[HttpPost]
[RequestSizeLimit(100_000_000)]
public IActionResult MyAction([FromBody] MyViewModel data)
{
}

DisableRequestSizeLimit Attribute可以同時(shí)應(yīng)用到Controller和Action上,以禁用對HTTP請求的大小限制,也是說設(shè)置為無限制。

[HttpPost]
[DisableRequestSizeLimit]
public IActionResult MyAction([FromBody] MyViewModel data)
{
}

2.請求上下文的解決方案

這個(gè)方案是一個(gè)全局配置方案,會(huì)影響到每個(gè)請求,當(dāng)然也可以通過一些靈活的配置對單個(gè)請求進(jìn)行修改,它通過IHttpMaxRequestBodySizeFeature 特征進(jìn)行配置。如下在HttpContext中取得,當(dāng)然也可以在ApplicationServices的IOC中獲取。

HttpContext.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 100_000_000;

IHttpMaxRequestBodySizeFeature特征的MaxRequestBodySize屬性是Nullable< long >類型,當(dāng)設(shè)置為null時(shí),類擬于MVC中的[DisableRequestSizeLimit]]。IsReadOnly屬性說明此時(shí)上下文中的請求大小是否可以修改。

3.全局配置解決方案

通過兩個(gè)宿主服務(wù)器Kestrel和HttpSys配置對請求大小進(jìn)行修改,規(guī)則與前兩種方案相同。

.UseKestrel(options =>
{
 options.Limits.MaxRequestBodySize = null;
}
.UseHttpSys(options =>
{
 options.MaxRequestBodySize = 100_000_000;
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • asp.net MVC使用PagedList.MVC實(shí)現(xiàn)分頁效果

    asp.net MVC使用PagedList.MVC實(shí)現(xiàn)分頁效果

    這篇文章主要為大家詳細(xì)介紹了asp.net MVC使用PagedList.MVC實(shí)現(xiàn)分頁效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • ASP.NET Core 使用Cookie驗(yàn)證身份的示例代碼

    ASP.NET Core 使用Cookie驗(yàn)證身份的示例代碼

    這篇文章主要介紹了ASP.NET Core 使用Cookie驗(yàn)證身份的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C# 添加圖片水印類實(shí)現(xiàn)代碼

    C# 添加圖片水印類實(shí)現(xiàn)代碼

    圖片水印類實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2009-05-05
  • Asp.net實(shí)現(xiàn)手寫驗(yàn)證碼的操作代碼

    Asp.net實(shí)現(xiàn)手寫驗(yàn)證碼的操作代碼

    這篇文章主要介紹了Asp.net實(shí)現(xiàn)手寫驗(yàn)證碼的操作代碼,首先我們來實(shí)現(xiàn)生成 生成驗(yàn)證碼的這一部分,這時(shí)候我們需要封裝一個(gè)類,里面有生成圖片和字符的方法,其實(shí)本質(zhì)上就是一個(gè)隨機(jī)數(shù),這個(gè)類卸載Model里面即可,具體操作代碼跟隨小編一起看看吧
    2024-05-05
  • ASP.NET Core Zero模塊系統(tǒng)講解

    ASP.NET Core Zero模塊系統(tǒng)講解

    本文詳細(xì)講解了ASP.NET Core Zero模塊系統(tǒng),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • .NET core高性能對象轉(zhuǎn)換示例代碼

    .NET core高性能對象轉(zhuǎn)換示例代碼

    這篇文章主要給大家介紹了關(guān)于.NET CORE高性能對象轉(zhuǎn)換的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • asp.net 刪除項(xiàng)目文件/文件夾IIS重啟,Session丟失問題

    asp.net 刪除項(xiàng)目文件/文件夾IIS重啟,Session丟失問題

    最近在做一個(gè)項(xiàng)目,涉及到大量文件中轉(zhuǎn)(先上傳到本項(xiàng)目的某個(gè)文件夾中,在移動(dòng)到FTP中),后面發(fā)現(xiàn)每次一刪除文件之后在做操作都會(huì)提示未登錄,剛開始以為是WebService Session丟失問題,后面發(fā)現(xiàn)緩存也更新了
    2011-12-12
  • .NET開發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)

    .NET開發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)

    隨著谷歌,F(xiàn)acebook發(fā)布他們的工具機(jī)器學(xué)習(xí)工具Tensorflow 2和PyTorch,微軟也發(fā)布了ML.NET 1.0。可以說2019年是機(jī)器學(xué)習(xí)社區(qū)普及化的一年,下面小編向大家簡單介紹一下關(guān)于ML.NET的入門學(xué)習(xí)
    2019-05-05
  • Opencv2.4.13與Visual Studio2013環(huán)境搭建配置教程

    Opencv2.4.13與Visual Studio2013環(huán)境搭建配置教程

    這篇文章主要為大家詳細(xì)介紹了Opencv2.4.13 與Visual Studio2013環(huán)境搭建配置教程的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • .NET Core 2.1中HttpClientFactory的最佳實(shí)踐記錄

    .NET Core 2.1中HttpClientFactory的最佳實(shí)踐記錄

    這篇文章主要給大家介紹了關(guān)于.NET Core 2.1中HttpClientFactory的最佳實(shí)踐記錄,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用.net core2.1具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-08-08

最新評論