麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:32:51
字體:
供稿:網(wǎng)友

一、前言

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

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

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

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

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

二、解決方案

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

1.MVC的解決方案

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

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

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

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

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

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

這個方案是一個全局配置方案,會影響到每個請求,當(dāng)然也可以通過一些靈活的配置對單個請求進(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時,類擬于MVC中的[DisableRequestSizeLimit]]。IsReadOnly屬性說明此時上下文中的請求大小是否可以修改。

3.全局配置解決方案

通過兩個宿主服務(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í)價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到ASP.NET教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品国产乱码久久久久久久久 | 99视频网址 | 成人三级免费电影 | 日韩一级免费毛片 | 国产分类视频 | 国产噜噜噜 | 3344永久免费 | 龙床上的呻吟高h | 日韩午夜片 | 欧美一级爱爱 | 在线观看国产网站 | 毛片免费在线 | 亚洲一区动漫 | 久久精品观看 | 亚洲小视频网站 | 亚州综合| 欧美成年私人网站 | 日本羞羞影院 | 久久久久免费精品国产小说色大师 | 国产精品久久久久久久久粉嫩 | 精品久久久一二三区播放播放播放视频 | 国产精品久久久久免费视频 | 久草最新 | 一级电影免费在线观看 | 91短视频在线观看视频 | 欧美成年私人网站 | 深夜福利久久久 | 久久久久久久久久亚洲 | 久久成人黄色 | 成人激情综合网 | 性盈盈盈影院 | 香蕉国产9 | 97porn| 国产亚洲高清在线精品不卡 | 99最新网址| 男男羞羞视频网站国产 | 国产精品毛片va一区二区三区 | 日本不卡一区二区在线观看 | 国产99精品| 日本人乱人乱亲乱色视频观看 | 亚洲第一男人天堂 |