我在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内的错误?如果是第一个-我应该安装哪些库才能正常工作?
我在dotnet core 3.0应用程序中具有以下代码:... //此url返回图像(内容类型:Blob)var imageUrl =“ https://barcode.tec-it.com/barcode.ashx?data = ABC-abc-1234&code = Code128&...
TL; DR