国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET Core中調整HTTP請求大小的幾種方法詳解

2024-07-10 13:32:51
字體:
來源:轉載
供稿:網友

一、前言

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

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

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

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

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

二、解決方案

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

1.MVC的解決方案

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

RequestSizeLimit Attribute,對每個Action的請求大小進行配置。如下調整MyAction的請求大小值為100,000,000 字節.

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

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

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

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

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

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

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

3.全局配置解決方案

通過兩個宿主服務器Kestrel和HttpSys配置對請求大小進行修改,規則與前兩種方案相同。

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新源县| 黑河市| 神池县| 城口县| 渭源县| 闽清县| 卢湾区| 加查县| 正安县| 安多县| 甘洛县| 万全县| 衡东县| 镇平县| 金湖县| 白朗县| 呼玛县| 麦盖提县| 仲巴县| 杭锦后旗| 安阳市| 航空| 阜宁县| 政和县| 竹溪县| 陇西县| 洛扎县| 弥勒县| 奇台县| 涟水县| 青铜峡市| 墨玉县| 余干县| 南宁市| 芜湖市| 中超| 曲沃县| 华容县| 栖霞市| 桦川县| 中牟县|