Ошибка запуска JSReport с использованием ASP.Net Core на IIS, работающем в Windows Server 2008 R2 - PullRequest
0 голосов
/ 06 марта 2019

Установлены пакеты nuget local, binary и aspnetcore.

Добавлен этот код для ConfigureServices в Statup.cs:

var localWebServerReportingService = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .Configure(cfg => cfg
        .AllowedLocalFilesAccess()
        .FileSystemStore()
        .BaseUrlAsWorkingDirectory()
    )
    .AsWebServer()
    .Create();
localWebServerReportingService.StartAsync();
services.AddJsReport(localWebServerReportingService);

Вот код для рендеринга файла:

try
{
    var viewHtml = await JsReportMvcService.RenderViewToStringAsync(HttpContext, RouteData, "InvoicePdf/InvoicePdf", invoiceGenerationModel);
    var report = await JsReportMvcService.RenderAsync(new RenderRequest
    {
        Template = new Template
        {
            Recipe = Recipe.ChromePdf,
            Engine = Engine.None,
            Content = viewHtml,
            Chrome = new Chrome
            {
                Format = "Letter",
                MarginTop = "0.5in",
                MarginBottom = "0.5in",
                MarginLeft = "0.5in",
                MarginRight = "0.5in"
            }
        }
    });
    var memoryStream = new MemoryStream();
    await report.Content.CopyToAsync(memoryStream);
    memoryStream.Seek(0, SeekOrigin.Begin);
    return memoryStream;
}
catch (Exception e)
{
    _logger.LogError("Error generating pdf file!");
    _logger.LogError(e.Message);
    return null;
}

На моей машине для разработки все работает нормально.В IIS я получаю эту ошибку:

"Невозможно отобразить шаблон. Ошибка тайм-аута: генерация PDF не завершена после 30000 мс"

Я также попытался добавить следующее в первый блок, и это неt help:

.RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))

Есть идеи?

...