FAQ,但新版IIS需要設定兩個地方才會運作(開放檔案上傳的限制)
以前只要設定一個地方即可
新版IIS需要設定兩個地方才行:
以Web.config 為例, .NET 4.x版(.NET Framework 4.x版)為例
<system.web>
<!-- 250 秒可執行時間長度,檔案限制 307 MB ( Unit: Kilo Bytes。注意!!這裡的單位是KB = 307,200 KB) -->
<httpRuntime targetFramework="4.8" enableVersionHeader="False" executionTimeout="250" maxRequestLength="307200" />
</system.web>
<system.webServer>
<security>
<requestFiltering> <!--file upload limitation -->
<!-- 300 秒可執行時間長度,檔案限制 307 MB ( 307,200,000 "Bytes"。 注意!跟上面的單位 "KB" 不一樣喔!) -->
<requestLimits maxAllowedContentLength="307200000" maxUrl="6144" maxQueryString="3072" />
</requestFiltering>
</security>
<!-- ********************************************************* -->
</system.webServer>
上述 "第二個設定" 可以在IIS裡面找到
上述 "第二個設定" 可以在IIS裡面找到
但第一個設定,必須手動進入 Web.config設定檔修改。
上述是以 .NET 4.x版(.NET Framework 4.x版)為例
===================================================
如果是 ASP .NET Core MVC該如何處理? (.NET Core / 開源 .NET / 開放原始碼 .NET )
===================================================
除了上面IIS的 Web.Config(如下),您仍要設定以外。或是透過 IIS管理畫面來調整(請參閱上面兩張圖片)
<system.webServer>
<security>
<requestFiltering> <!--file upload limitation -->
<!-- 300 秒可執行時間長度,檔案限制 307 MB ( 307,200,000 "Bytes"。 注意!檔案大小的單位!) -->
<requestLimits maxAllowedContentLength="307200000" maxUrl="6144" maxQueryString="3072" />
</requestFiltering>
</security>
<!-- ********************************************************* -->
</system.webServer>
ASP.NET Core MVC的「設定檔」修改如下。請特別注意一開始的「builder」關鍵字,
因為 Program.cs設定檔分成 : 上 / 下兩個部分,不要搞錯。
這些的設定是放在「上半部」
// 如果不知道什麼是 Kestrel ,請看下面補充說明。
builder.WebHost.ConfigureKestrel(options =>
{
options.Limits.MaxRequestBodySize = 1073741824; // 註解: 1GB。單位是 Bytes
});
builder.Services.Configure<FormOptions>(options =>
{
// 參考範例,檔案上傳大小,限制256 MB
// options.MultipartBodyLengthLimit = 268435456;
options.ValueLengthLimit = int.MaxValue; // 後面的數值,請自己填入檔案大小的數字,單位是 Bytes.
options.MultipartBodyLengthLimit = int.MaxValue;
options.MultipartHeadersLengthLimit = int.MaxValue;
});
MVC的 控制器 (Controller)或是 動作 (Action) 裡面
[HttpPost]
[RequestSizeLimit(1073741824)] // 註解: 1GB。單位是 Bytes
// 完全取消限制,但真心 "不建議" 這樣做! [DisableRequestSizeLimit]
public IActionResult Upload(IFormFile file)
{
// 處理檔案上傳
}
註解與補充:(資料來源:CoPilot - AI)
Kestrel 是 ASP.NET Core "內建"的跨平台 Web 伺服器,用來處理 HTTP 要求。當你在 Windows、Linux 或 macOS 上開發 ASP.NET Core 應用程式時,Kestrel 是預設的伺服器。
– 它速度快、效能好,適合用於開發與生產環境。
– 在 Windows 上部署時,Kestrel 通常會搭配 IIS 使用。
當你在 Windows 上使用 IIS 發佈 ASP.NET Core 應用程式時,其實是這樣運作的:
– IIS 接收來自瀏覽器的請求。
– IIS 透過一個叫做 ASP.NET Core Module (ANCM) 的中介,把請求轉交給 Kestrel。
– Kestrel 處理請求,然後回傳結果給 IIS,再由 IIS 回傳給瀏覽器。
所以即使你「只用 IIS」,其實背後還是有 Kestrel 在運作。
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/