c# - System.drawing.common 'gdip' 的类型初始化器抛出异常
问题描述
这是我将图片添加到工作表的代码。我从数据库中获取图片作为一个字节。.Net Core 框架版本为 2.2.104。这是一个 API 项目。在我的语言环境中,代码运行良好。我使用如下的 ClosedXML 组件 0.95.4 版本。
[HttpPost("GetTowel")]
public IActionResult GetTowel()
{
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
string fileName = "Towel Quotation.xlsx";
try
{
using (var workbook = new XLWorkbook())
{
IXLWorksheet worksheet = workbook.Worksheets.Add("Towel Quotation");
byte[] bytes = _fileService.Get(159).FileInBytes;
System.IO.Stream x = new System.IO.MemoryStream(bytes);
//the exception is throwed at this line:
**var image = worksheet.AddPicture(x).MoveTo(worksheet.Cell("P1")).Scale(1.0);**
using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, contentType, fileName);
}
}
}
catch (Exception ex)
{
return BadRequest(ErrorResultFormatter.PrepareErrorResult("",ex.Message));
}
}
我的 Kubernetes 服务器信息如下:
System.drawing.common the type initializer for 'gdip' threw an exception
*FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build WORKDIR /app
COPY *.csproj Nuget.Config ./ RUN dotnet restore /property:Configuration=Release
--configfile=Nuget.Config --no-cache --force
COPY . ./temp/ WORKDIR /app/temp RUN dotnet publish -c Release -o out FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime ENV ASPNETCORE_URLS="http://+" ENV ASPNETCORE_Kestrel__Certificates__Default__Password="*****" WORKDIR /app COPY --from=build /app/temp/out ./ ENTRYPOINT ["dotnet", "blahblah.dll"]*
在服务器端,我得到如下异常:“system.drawing.common 'gdip' 的类型初始化程序引发了异常”
我在谷歌上搜索了很多次。通常建议使用这种方式添加 docker 文件:
RUN apt-get install libgdiplus
但是这种方式也没有解决我的问题。有谁能够帮我?
提前致谢。
解决方案
我有一个像这样的 Dockerfile:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ...
我apt-get update and install
在第二行运行命令。你可以像这样运行你的命令。我希望它也适合你。
推荐阅读
- binding - 绑定到 Asp.NET MVC Core 中的 TimeSpan 属性
- scala - 从 RDD 获取模式
- telethon - Telethon - 断开连接时“从未检索到未来异常”
- python - 如何从数据框中选择具有相同日期时间的数据?
- html - 如何更改 Bootstrap 自定义复选框活动状态的背景颜色?
- javascript - 如何将这个无法识别的 CSS 功能转换为 javascript?
- facebook - 通过单击我的 Wordpress 网站上的按钮打开 Facebook Native App
- python - 正则表达式过滤器在开头包含单词但不包含另一个单词
- php - 如何从 Vue 对 Laravel 执行批量删除?
- groovy - Groovy:将字符串转换为 Json 对象