Docker中的Aspose.Words转换抛出错误

时间:2018-02-05 12:36:30

标签: c# aspose.words skiasharp

我正在研究.NET Core 2.0应用程序,它可以在VS 2017中将文档转换为PDF,JPEG,PNG并支持Docker。 当我通过IIS Express启动应用程序时一切正常,但如果我在发布模式下将应用程序作为Docker容器启动,则应用程序会抛出错误。

  1. 当我转换为PDF时:

    The type initializer for 'SkiaSharp.SKManagedStream' threw an exception.

  2. 当我转换为JPEG时:

    The type initializer for 'SkiaSharp.SKImageInfo' threw an exception.

  3. 如何解决该问题?或者它是SkiaSharp或Aspose库的问题?

2 个答案:

答案 0 :(得分:0)

问题的原因是SkiaSharp,它的NuGet包中不包含本机libSkiaSharp.so。 https://github.com/mono/SkiaSharp/issues/288

为了解决这个问题,我做了以下几点:

  1. 从这里下载libSkiaSharp.so https://github.com/mono/SkiaSharp/releases/tag/v1.59.3

  2. 使用以下nuspec创建NuGet包

    <?xml version =“1.0”encoding =“utf-8”?> < package xmlns =“http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd”> <元数据> < ID> Aspose.Skia.Linux.Natives< / ID> <版本> 1.59.3< /版本> <标题> Aspose.Skia.Linux.Natives< /标题> <作者>&的Aspose LT; /作者> <业主>&的Aspose LT; /所有者> < requireLicenseAcceptance&GT假LT; / requireLicenseAcceptance> < description>包含适用于Linux的skia原生文< / description> <依赖性> < group targetFramework =“。NETStandard2.0”> < dependency id =“SkiaSharp”version =“1.59.3”/> < /组> < /依赖性> < /元数据> <文件> < file src =“C:\ Temp \ libSkiaSharp.so”target =“runtimes \ linux-x64 \ native \ libSkiaSharp.so”/> < /文件> < /包>

  3. 将生成的NuGet包放入私有存储库,并在我的.NET Core Web应用程序中添加对它的引用。

  4. 添加了对Aspose.Words NuGet包的引用。

  5. 修改后的Dockerfile:

  6. FROM microsoft / aspnetcore:2.0

    ARG来源

    WORKDIR / app

    EXPOSE 80

    运行apt-get update&& apt-get install -y libfontconfig1

    COPY $ {source:-obj / Docker / publish}。

    ENTRYPOINT [“dotnet”,“WebApplication1.dll”]

    正如你所看到的,我添加了“RUN apt-get update&& apt-get install -y libfontconfig1”,因为libSkiaSharp.so似乎依赖它。

    我与Aspose一起担任开发者布道者。

答案 1 :(得分:0)

似乎问题出在服务器计算机上对.nuget > packages的访问权限上。我在服务器计算机上遇到了类似的问题,没有获得应用程序池的许可。