Tuespechkin需要很长时间才能响应,并返回null

时间:2019-04-29 12:43:07

标签: c# .net pdf-generation wkhtmltopdf tuespechkin

我目前在我的项目TuesPechkin版本2.1.1和TuesPechkin.Wkhtmltox.AnyCPU v0.12.4.1中使用

这是我的一些代码:

byte[] result = null;
 try
 {
 var globalSettings = CreateGlobalSettings(portraitMode);
 var objectSettings = CreateObjectSettings(websiteUrl, urlParameters);
 var document = new HtmlToPdfDocument
 {
 GlobalSettings = globalSettings
 };
 document.Objects.Add(objectSettings);
 CreateEventLog.CreateInformationLog("Ready to convert PDF");
 result = Converter.Convert(document);
 CreateEventLog.CreateInformationLog(result == null
 ? "Conversion failed using the Pechkin library"
 : "PDF conversion finished");

我在3种不同的环境中运行此代码:

  1. 在我的本地计算机上,它运行良好,并在3秒内生成了文件。
  2. 在我的其中一台服务器(称为服务器A)上,它运行良好,并在3秒钟内生成了文件。
  3. 在我的另一台服务器(称为服务器B)上,它在Converter.Convert部分中保持1分钟(由于某种原因,我不明白),然后在那一分钟后返回null。

服务器A和服务器B的设置相同(CPU,RAM等) 转换期间,服务器B上没有峰值增加。

有什么建议/想法吗?

2 个答案:

答案 0 :(得分:0)

我发现了问题所在。

我要转换的URL在表示层中,该表示层部署在单独的服务器中。 Pechkin转换器位于业务层中。

在服务器A中,我可以从业务服务器访问URL。 在服务器B中,我无法从业务服务器访问URL。

这可能是一些需要创建的防火墙例外。

最好有TuesPechkin,返回一个错误,指出它无法访问URL。

答案 1 :(得分:0)

重要的是检查您如何获得转换,处置问题可能会导致问题 只需检查代码表单here

public static IConverter GetConverter()
{
    lock (Locker)
    {
    if (converter != null)
        {
            return converter;
        }

        var tempFolderDeployment = new TempFolderDeployment();
        var winAnyCpuEmbeddedDeployment = new WinAnyCPUEmbeddedDeployment(tempFolderDeployment);
        IToolset toolSet;
        if (HostingEnvironment.IsHosted)
        {
            toolSet = new RemotingToolset<PdfToolset>(winAnyCpuEmbeddedDeployment);
        }
        else
        {
            toolSet = new PdfToolset(winAnyCpuEmbeddedDeployment);
        }

        converter = new ThreadSafeConverter(toolSet);
    }

    return converter;
}