簡體   English   中英

如何修復 Azure 應用程序服務無法加載 DLL 'libwkhtmltox' 或其依賴項之一

[英]How to fix Azure app service unable to load DLL 'libwkhtmltox' or one of its dependencies

Azure 應用服務無法加載 libwkhtmltox。 我在本地機器上工作正常,但在部署到 azure 時,我收到無法加載或其依賴項之一的錯誤。 我在網上搜索並對我的代碼進行了一些更改,我又遇到了這個錯誤。

當我再次推送到 azure 時出現以下錯誤

BadImageFormatException:嘗試加載格式不正確的程序。 (0x8007000B) System.Runtime.InteropServices.NativeLibrary.LoadFromPath(string 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>

根據錯誤信息,

要解決此問題,您可以嘗試將平台目標設置為x86 ,如下所示,然后嘗試發布。

在此處輸入圖像描述

有關更多信息,請參閱以下鏈接:

. 無法加載 DLL 'libwkhtmltox' | GitHub

. BadImageFormatException |MSDN

. 嘗試加載格式不正確的程序”,即使平台相同 | SO THREAD

. DinkToPdf Net Core 無法加載 DLL 個文件 | 所以線程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM