【发布时间】:2020-10-27 12:38:20
【问题描述】:
我必须在我的后台应用程序中发送邮件,为此我使用 Hangfire,但我必须在每封邮件及其收件人中附加一个文档,要附加的文档信息位于我用 rotativa 转换的表格。
我担心的是,当我想将文档转换为 byte[] 时,我总是知道 HttpContext 是 null,这显然是因为当一切都在后台时没有触发操作的 HTTP 请求。
这是我的实际代码:
var Avis_views = new ViewAsPdf("~/Views/AvisAutomatique/ExportPdfDebit.cshtml", printa)
{
PageMargins = new Rotativa.Options.Margins(0, 0, 0, 0),
MinimumFontSize = 14,
/*ageHeight=60,*/
PageOrientation = Rotativa.Options.Orientation.Portrait,
PageSize = Rotativa.Options.Size.A4,
};
var fileName = "DEBITADVISE_" + Numcpt + "_" + _GetTransDateTime() + ".pdf";
//var path = Path.Combine(@"C:\DocumentPdf\", fileName);
byte[] abc = Avis_views.BuildFile(quotesController.ControllerContext);
//System.IO.File.WriteAllBytes(path, abc);
MemoryStream ms = new MemoryStream(abc);
sendemail(email, fileName, abc, emailc);
有人可以帮我从我的控制器初始化 httpcontext 吗?
【问题讨论】:
-
为什么你认为你需要一个 HttpContext?如果这是一个后台进程,就不会有 HttpContext。以独立于 HttpContext 的方式编写代码。
-
是的,在这种情况下你是对的,如何替换这行代码 // byte[] abc = Avis_views.BuildFile(quotesController.ControllerContext) // thks
-
我不知道
Avis_views.BuildFile做了什么,也不知道为什么它需要控制器上下文。 -
Avis_Views.Buildfile 获取 rotativa 文件的字节,我只需要获取文件的字节
-
那么为什么需要控制器上下文?
标签: c# asp.net asp.net-mvc rotativa