【问题标题】:How to fix exception Unable to load DLL 'gdiplus.dll': The specified module could not be found如何修复异常无法加载 DLL 'gdiplus.dll':找不到指定的模块
【发布时间】:2020-02-06 19:23:16
【问题描述】:

我正在 .Net Core 2.1 中开发 Service Fabric Mesh 应用程序,其中无法在 microsoft/dotnet 中使用 System.Drawing.Common:运行时(Windows 容器)

下面是我的docker文件代码

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base

WORKDIR /app

EXPOSE 80

FROM microsoft/dotnet:2.1-sdk AS build

WORKDIR /src

COPY MS_Upload/MS_Upload.csproj MS_Upload/

RUN dotnet restore MS_Upload/MS_Upload.csproj

COPY . .

WORKDIR /src/MS_Upload

RUN dotnet build MS_Upload.csproj -c Release -o /app

FROM build AS publish

RUN dotnet publish MS_Upload.csproj -c Release -o /app

FROM base AS final

WORKDIR /app

COPY --from=publish /app .

ENTRYPOINT ["dotnet", "MS_Upload.dll"]

我得到的错误:

Unable to load DLL 'gdiplus.dll': The specified module could not be found.
at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromStream(IStream stream, IntPtr& bitmap)
   at System.Drawing.Bitmap..ctor(Stream stream, Boolean useIcm)
   at System.Drawing.Bitmap..ctor(Stream stream)
   at MS_Upload.UserImageMaster.UploadAllChunkImageLibrary(Int32 iPeppyPrintID, Int32 iSourceID, String sAlbumID, Int32 iPickUpOrderID, String sFileName, Int32 iTotalChunk)

【问题讨论】:

    标签: c# docker microservices asp.net-core-2.1


    【解决方案1】:
    • 尝试使用 linux 容器,因为 libgdiplus 模块默认不会安装在 windows 容器上,很可能它可以正常工作

    • 使用以下命令 (reference) 安装 system.Drawings 依赖项:

      运行 apt-get 更新 \ && apt-get install -y --allow-unauthenticated \ libc6-开发\ libgdiplus \ libx11-开发\ && rm -rf /var/lib/apt/lists/*

    如果需要使用 windows 映像,您可以使用 chocolatey 在 windows 容器上安装这些依赖项

    【讨论】:

    • 我相信服务网格只有 Windows。
    • 我相信 .net 核心应用程序可以使用 windows 或 linux 容器进行容器化,但如果您的应用程序需要使用 windows 容器,您可以在 windows 容器中安装 Chocolatey 作为包管理器,然后安装这些包“libc6-dev,libgdiplus,libx11-dev”
    • 是的。 .NET Core 是跨平台的,但这是专门针对 Azure 服务网格的,我认为它仅限于 Windows。
    • “Service Fabric Mesh 可以运行 Windows 或 Linux Docker 容器”参考:docs.microsoft.com/en-us/azure/service-fabric-mesh/…
    • 你也可以在这里参考linux和windows上的所有模板部署步骤:github.com/Azure-Samples/service-fabric-mesh/tree/master/…
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多