Я хочу использовать бритву, возвращенную из метода 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.
Исключение определенно принадлежит Ротативе.
Спасибо