.netcore3.1 遇到一個webapi 上傳大文件問題
首先,在kestrel模式調試模式下上傳

會報錯413,
需要在三個地方添加
1、startup中

這里設置的2g最大值
2、在program中

設置2g大小
3、在對應的upload api方法中

可以設置不限制大小,或者填入大小
這時再啟動kestrel調試,上傳

會發現,接口已經成功,我上傳的100m的文件,完全可以滿足。
接下來,將webapi項目打包發布到IIS上

在通過ip訪問該iis

再次嘗試之前那個100m的文件,會發現

有錯誤413 Request Entity Too Large
此時,是iis對文件上傳還有一層限制,打開iis,選擇配置編輯器


可以發現,最大上傳值被限制到了30m,於是再后面加兩個0,使其達到3g,再去試試

居然還是報錯413,但是和上一次不一樣了,這次是 413 Payload Too Large ,負載過大
我將asp中


這些也都改了,並沒有什么用。但是問題我覺得並不在代碼,因為kestrel模式就已經可以上傳100m文件了,問題肯定是出在iis上,搜索未果。於是我決定,選擇部署在nginx上(最后成功)
部署netcore 部署nginx 上傳大文件
我用的環境是ubuntuserver18.04,搭建前需要幾項東西
1、netcore3.1 sdk
2、nginx(反向代理)
3、pm2 (守護dotnetcore進程)
下面開始第一步,安裝sdk
安裝源wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.deb
安裝sdksudo add-apt-repository universesudo apt-get install apt-transport-httpssudo apt-get updatesudo apt-get install dotnet-sdk-3.1
如果安裝完成且成功,輸入 dotnet --list-sdks 會顯示安裝的版本

2、安裝nginx
更新
sudo apt-get update
安裝
sudo apt-get install nginx
啟動
sudo service nginx start
如果安裝完成且啟動成功,瀏覽器輸入ip會出現

3、安裝pm2,用來守護dotnetcore 進程
sudo apt-get update
apt-get install nodejs
apt-get install npm
npm install -g pm2
設置開機啟動pm2 startup
如果安裝完成且啟動成功 輸入pm2

https://www.cnblogs.com/stulzq/p/9775973.html 這是一篇關於pm2的文章,可以詳細學習
准備工作完成后,將web項目打包並上傳至ubuntu機器上


ubuntu 用 rar x (name)來解壓rar
解壓后,進入到解壓目錄,先使用 dotnet Lincms.Web.dll(我的項目名字) 來開啟kestrel模式下的項目發現可以通過瀏覽器訪問且上傳大文件正常

然后我們用pm2來守護它,先停掉 ctrl+c
運行 sudo pm2 start "dotnet Lincms.Web.dll --urls http://*:8099" --name cms-maker(自己取名字)
在使用pm2 ls來查看守護的進程

再然后,我們需要把這個進程放在nginx中,做代理
sudo vim /etc/nginx/sites-available/default
修改這個默認配置文件

再再然后,還需要修改nginx的最大上傳容量
sudo vim /etc/nginx/nginx.conf

nginx -s reload 重啟nginx
設置最大1g上傳

你會發現,成功了!
