前言
在 ASP.NET Core File Upload Size Limit 說明,當設定整個系統的上傳檔案大小後,
如果要針對某個 Method 調整成別 Size ,
可以透過設定 RequestSizeLimit 屬性來達成。
最近使用 Abp Framework 來測試時,使用 File Upload/Download with BLOB Storage System in ASP.NET Core & ABP Framework 範例來測試上傳檔案,設定 RequestSizeLimit 屬性卻沒有效果。
研究/求助
所以一樣在 Action Method 那設定 RequestSizeLimit 屬性,限制為 2011 Bytes,
並設定中斷點來查看 HttpContext.Features.MaxRequestBodySize,
發現它的值並沒有變成 2011,而是預設值 30,000,000
而且 Log 裡面有一段是說 IHttpRequestBodySizeFeature 是 read-only
[WRN] A request body size limit could not be applied. The IHttpRequestBodySizeFeature for the server is read-only.
所以就在 abp github 上填一個 issue 求助,
RequestSizeLimit attribute not working
他們的回覆很快速,一天就有了結果。
因為 RequestSizeLimit 屬性與 Abp Framework 有些衝突,
所以目前是無法正常運作的。
所以只能透過自定義的屬性搭配 Middleware 來設定 HttpContext.Features.MaxRequestBodySize 的值,如下,
1 | if (MultiTenancyConsts.IsEnabled) |
使用 MyRequestSizeLimit 後,HttpContext.Features.MaxRequestBodySize 的值,就是 MyRequestSizeLimit 設定值。
參考資訊
RequestSizeLimit attribute not working
ASP.NET Core File Upload Size Limit