原文地址: https://www.jeremyjone.com/504/,轉載請註明
剛開始寫後端時,只是上傳一些圖片,文檔之類的文件。最近需要上傳視頻,尤其是大型視頻,動輒上G的文件,我開始也是直接上傳,然後前端直接連接錯誤,然而後端輸出沒有任何反應,有點懵,初步判斷是文件超限,於是上網查詢資料,發現文件大小限制在30M左右,自己測試大概在27M多一點,我這裏30M的文件上傳也失敗。。。
修改Startup中ConfigureServices的配置
跑題了,回到正題,習慣性的去stackoverflow尋找答案,看到這樣的答案:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
// 這裏是我看到的解決方案,我還將bodyLengthLimit從 int.MaxValue 變成了 long.MaxValue,已達到超大文件的效果。
services.Configure<FormOptions>(options =>
{
options.ValueLengthLimit = int.MaxValue;
options.MultipartBodyLengthLimit = long.MaxValue;
options.MultipartHeadersLengthLimit = int.MaxValue;
});
}
這個答案的標星數很多,而且評論很完美,統一的已解決
。。。我滿懷期待的重新測試,然後發現50M的文件依然不能上傳。
我不清楚是我的配置問題,還是其他問題,有需要的朋友可以自己拿去測試一下,應該是一種解決方案,只不過不適合我。
配置web.config
於是乎,去csdn找答案,很快發現了一個簡單配置方法,在項目中添加web.config
文件,一種xml格式配置文件,根據說明,他似乎可以放在項目中的任何地方,不過一般我還是習慣還是放在根目錄下。
創建完畢後,添加如下內容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- 1 GB -->
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
這個方案對我是OK的,目前上傳小於1G的文件都是可以的,然後我嘗試將數字改成4294967296
,也就是4G,上傳超過2G的文件依然是OK的,這個方案對我很友好。有需要的朋友可以拿去。
題外話
昨天配置了公共服務機,修改了IIS Express的配置,然後當我把上面的web.config
文件放到項目中後,服務機可以正常訪問192.168.1.7:44342
,其他電腦通通都報503。。。鬱悶一下。
然後,根據修改IIS Express的思路,我把web.config
刪了,將裏面的內容放在了項目的.vs
文件夾中的配置文件裏,也就是.vs/config/applicationhost.config
文件,找到對應的<system.webServer>
節點,把上面的內容添加進去。
重啓IIS服務器,管理員啓動vs,運行,完美。。。