.netcore 部署時遇到413 Request Entity Too Large 和 413Payload Too Large 的問題


.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.deb
sudo dpkg -i packages-microsoft-prod.deb

安裝sdk
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo 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上傳

 

 

 你會發現,成功了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM