c# - 如何修复 Azure 应用服务无法加载 DLL 'libwkhtmltox' 或其依赖项之一
问题描述
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>
解决方案
根据错误信息,
要解决此问题,您可以尝试将平台目标设置为x86 ,如下所示,然后尝试发布。
有关更多信息,请参阅以下链接:
. 无法加载 DLL 'libwkhtmltox' | GitHub
. BadImageFormatException |MSDN
推荐阅读
- google-apps-script - 为什么经常出现“ReferenceError: Drive is not defined”?
- python-3.x - 如何从命令行激活 PyTest 夹具?
- java - 滚动到 EditText 字段时隐藏键盘问题
- c# - C# 自定义属性传递给被调用的方法
- c# - C# 行程申请 - 在继续之前重复查询
- google-cloud-platform - GCP / Cloud Functions 是否有类似 AWS Lambda 层的库概念?
- python - 使用请求python模块发送删除请求但正文只是字符串而不是json?
- javascript - Datatables jQuery 获取行数据移动/PC 视图
- javascript - Array.length 说它是 0,即使它不是 React/Javascript/Typescript
- python - 在python中将复杂字符串转换为json