Rotativa ActionAsPdf не вызывает метод ActionResult - PullRequest
0 голосов
/ 11 мая 2019

Я хочу использовать бритву, возвращенную из метода ActionResult, чтобы получить PDF, а затем получить байты из полученного PDF. Это всегда работало, и я не уверен, что вызвало его поломку.

У меня есть этот код

private byte[] CreateCertificatePart(CertificatePart part, int quoteid)
{
    var customSwitches = string.Format(
        "--print-media-type " +
        "--margin-top 10mm " +
        "--margin-bottom 10mm " +
        "--margin-left 10mm " +
        "--margin-right 10mm " +
        "--encoding utf-8 " +
        "--minimum-font-size 11 " +
        "--zoom 1.0 " +
        "--disable-smart-shrinking"
    );

    var pdfResult = new ActionAsPdf(part.ToString(), new { quoteid }) { CustomSwitches = customSwitches };

    var pdfBytes = pdfResult.BuildFile(ControllerContext);

    return pdfBytes;
}

part.ToString оценивается как "CertificateBody"

Этот метод должен затем вернуть результат в переменную pdfResult

public ActionResult CertificateBody(int quoteid)
{
    try
    {
        var data = new PdfData();

        using (var repo = new PolicyQueries())
        {
            var cert = repo.GetJsonCert(quoteid);
            data = JsonConvert.DeserializeObject<PdfData>(cert.ScheduleJson);
        }

        return View(data.PdfBodyName, data.CertModel);
    }
    catch (Exception ex)
    {
        AppInsightLog.LogError(ex, $"NewCertificateBody{quoteid.ToString()}");
        return new HttpStatusCodeResult(400, "NewCertificateBody");
    }
}

Но если я поставлю точку останова в методе CertificateBody, он не будет вызван. Поэтому вместо этого я получаю «ссылка на объект не установлена ​​на экземпляр объекта», когда эта строка запускается

var pdfBytes = pdfResult.BuildFile(ControllerContext);

Я не могу понять, является ли что-то в контексте контроллера нулевым (объект вообще не является нулевым) или если он неправильно читает wkhtmktopdf.exe.

Исключение определенно принадлежит Ротативе.

Спасибо

...