【问题标题】:How to fix Azure app service unable to load DLL 'libwkhtmltox' or one of its dependencies如何修复 Azure 应用服务无法加载 DLL 'libwkhtmltox' 或其依赖项之一
【发布时间】:2021-09-29 16:48:50
【问题描述】:

Azure 应用服务无法加载 libwkhtmltox。我在本地机器上工作正常,但是在部署到 azure 时,出现无法加载的错误或其依赖项之一。我在网上搜索并修改了我的代码,我又遇到了这个错误。

当我再次推送到 azure 时出现以下错误

BadImageFormatException: 试图加载一个带有 格式不正确。 (0x8007000B) System.Runtime.InteropServices.NativeLibrary.LoadFromPath(字符串 libraryName, bool throwOnError)

以下是更新后的代码

            var wkHtmlToPdfFileDllName = "libwkhtmltox";
             if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                wkHtmlToPdfFileDllName += ".so";
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                wkHtmlToPdfFileDllName += ".dylib";
            }
            else
            {
                wkHtmlToPdfFileDllName += ".dll";
            }

            var wkHtmlToPdfPath = Path.Combine(Directory.GetCurrentDirectory(), "wkhtmltox", wkHtmlToPdfFileDllName);
            CustomAssemblyLoadContext context = new CustomAssemblyLoadContext();
            context.LoadUnmanagedLibrary(wkHtmlToPdfPath);
            services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

我也将此添加到 .csproj

  <ItemGroup>
  <None Remove="wkhtmltox\libwkhtmltox.dll" />
</ItemGroup>

<ItemGroup>
  <EmbeddedResource Include="wkhtmltox\libwkhtmltox.dll">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </EmbeddedResource>
</ItemGroup>

【问题讨论】:

  • "我在本地机器上工作得很好" - 你在本地运行的怎么样,Docker?
  • 我没有在本地和生产环境中使用 docker

标签: c# azure asp.net-core dll azure-web-app-service


【解决方案1】:

根据报错信息,

要解决此问题,您可以尝试将平台目标设置为 x86,如下所示,然后尝试发布。

更多信息请参考以下链接:

Unable to load DLL 'libwkhtmltox' | GitHub

BadImageFormatException |MSDN

An attempt was made to load a program with an incorrect format" even when the platforms are the same | SO THREAD

DinkToPdf Net Core not able to load DLL files | SO Thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2011-05-23
    • 2012-09-15
    • 2018-08-21
    相关资源
    最近更新 更多