我在dotnet core 3.0应用程序中具有以下代码:
...
// This url returns image (Content-Type: Blob)
var imageUrl = "https://barcode.tec-it.com/barcode.ashx?data=ABC-abc-1234&code=Code128&dpi=96";
HttpClient client = HttpClientFactory.Create();
using (var input = await client.GetStreamAsync(imageUrl))
{
var bitmap = new Bitmap(input); // this is dangerous code
}
...
我想在基于alpine3.9(mcr.microsoft.com/dotnet/core/aspnet:3.0.0-alpine3.9)的docker容器中运行此代码 我知道我应该在Docker容器中安装其他库以使用System.Drawing.Common:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0.0-alpine3.9
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk update \
&& apk add \
libgdiplus
但是无论如何-它失败并显示以下堆栈跟踪:
System.ArgumentException: Parameter is not valid.
at System.Drawing.Image.InitializeFromStream(Stream stream)
at System.Drawing.Bitmap..ctor(Stream stream)
我知道这段代码在基于debian的容器中工作正常,如下所示:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libgdiplus
我试图在高山容器中安装libgdiplus-dev
,fontconfig
和ttf-dejavu
库,但是它不起作用
所以主要问题-是与库相关的问题还是dotnet内的错误?如果是第一个-我应该安装哪些库才能工作?
答案 0 :(得分:0)
TL; DR
将obj
更改为https://barcode.tec-it.com/barcode.ashx?data=ABC-abc-1234&code=Code128&dpi=96
描述
这是dotnet内部的错误-https://github.com/dotnet/corefx/issues/41527 问题链接生成GIF-导致问题。解决方法-使用链接将生成JPEG