【发布时间】: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