我正在尝试使用Rotativa生成PDF并返回字节,但是出现错误:
值不能为null。参数名称:上下文
这是我的代码:
public string getReportsPDF(string community, string procedure)
{
SiteSuperReportsController controller = new SiteSuperReportsController();
string value = "";
byte[] pdfBytes = new byte[] { };
if (procedure == "GetProductionTasks")
{
var actionPDF = new Rotativa.ActionAsPdf("RedBluePDF", new { community = community, procedure = procedure })
{
PageSize = Size.A4,
PageOrientation = Rotativa.Options.Orientation.Landscape,
PageMargins = { Left = 1, Right = 1 }
};
try
{
pdfBytes = actionPDF.BuildFile(controller.ControllerContext);
value = "Works";
}
catch(Exception e)
{
value = e.Message.ToString();
}
}
return value;
}
返回的值为Value不能为空。参数名称:上下文
我在做什么错了?
答案 0 :(得分:0)
一种选择是将对pipeline {
agent any
stages {
stage('Example') {
steps {
sh '''
docker-compose exec -T cli drush status
docker-compose exec -T cli curl http://nginx:8080 -v
'''
}
}
}
post {
always {
sh 'docker-compose down'
}
}
}
的调用移动到控制器的操作方法中,在该方法中,控制器上下文可用作名为BuildFile
的属性。
如果您需要像示例中那样手动创建控制器,则必须自己创建上下文。 Derek Comartin在他的博客文章Using Razor in a Console Application (outside of ASP.NET Core MVC)中展示了如何针对ASP.Core 2项目执行此操作。根据您的情况,尝试更改
ControllerContext
到
pdfBytes = actionPDF.BuildFile(controller.ControllerContext);
使用以下方法:
pdfBytes = actionPDF.BuildFile(CreateDummyControllerContext("SiteSuperReports"));
您可能需要添加Microsoft.Extensions.PlatformAbstractions程序包。