上一篇:銀河麒麟服務器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客
.NET 6之前,在Linux服務器上安裝 libgdiplus 即可解決,libgdiplus是System.Drawing.Common原生端跨平臺實現的主要提供者,是開源mono項目。地址:GitHub - mono/libgdiplus: C-based implementation of the GDI+ API
因此,解決方法當然是安裝相關的依賴:
1、CentOS
通過一鍵命令
sudo curl https://raw.githubusercontent.com/stulzq/awesome-dotnetcore-image/master/install/centos7.sh|sh
或者
yum update
yum install libgdiplus-devel -y
ln -s /usr/lib64/libgdiplus.so /usr/lib/gdiplus.dll
ln -s /usr/lib64/libgdiplus.so /usr/lib64/gdiplus.dll
2、銀河麒麟V10 或 Ubuntu
通過一鍵命令
sudo curl https://raw.githubusercontent.com/stulzq/awesome-dotnetcore-image/master/install/ubuntu.sh|sh
或者
apt-get update
apt-get install libgdiplus -y
ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
3、Docker
Dockerfile 加入 RUN 命令,以官方 asp.net core runtime 鏡像,以 asp.net core 2.2 作為示例:
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime
WORKDIR /app
COPY . .
RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
EXPOSE 80
ENTRYPOINT ["dotnet", "<你的入口程序集>"]
需要注意的是apt-get update 這一步是必不可少的,不然會報找不到 libgdiplus。而且因為是官方鏡像,用的是Debain10構建的docker鏡像,在編譯運行構建時會非常慢。
由于本人項目已從NetCore3.1升級到Net6.0,參考連接:NetCore3.1項目升級到Net6.0_.net 3.0 .net6 升級_csdn_aspnet的博客-CSDN博客?
且項目中使用的System.Drawing.Common已替換為其它解決方法,如果你沒有其它方案,請參考:.NET6 System.Drawing.Common 通用解決辦法_csdn_aspnet的博客-CSDN博客?
于是修改代碼,將錯誤信息在swagger頁面調用接口測試中輸出,方便解決具體問題,提示如下:?
?Access to the path '/xxx/xxx' is denied. 或 access to the path xxx is denied
說明當前用戶權限不夠,所以要使用chmod,將wwwroot文件夾授權:chmod 777 wwwroot
其中 777,所有用戶都具有讀取寫入權限,再次使用swagger上傳如下圖: