をレンダリングするために、ControllerContext を注入する必要がある pdf を作成するために必要なサービス クラスがありますhtml => pdf
。このサービスは、web/mvc プロジェクトへの参照を持たない中間層を介して呼び出されます。ninject は必要なサービスの注入などをすべて行うため、これで問題ありません。これがサービスの外観です (これらの目的のために単純化されています)。
public class PdfCreatorService : AbstractUrlBasedPdfCreatorService
{
[Inject]
public ControllerContext ControllerContext { get; set; }
public override byte[] CreateReport(int reportId)
{
var result = new PdfController().CreateReport(reportId);
using (var it = new ResponseCapture(ControllerContext.RequestContext))
{
result.ExecuteResult(ControllerContext);
return it.ReadAllContents();
}
}
}
簡略化されたコール スタックは次のとおりです。
Web.HomeController.SendEmailWithPdf(int id) 呼び出し:
MiddleTier.BusinessLogic.SendEmailWithPdf(int id) 呼び出し:
Web.Services.PdfCreatorService.CreateReport(int id)
Ninject は PdfCreatorService に到達していますが、問題ありませんが、どうにかして ControllerContext を HomeController から (中間層を介して) PdfCreatorService に転送する必要があります。一方、中間層は ControllerContext への参照を持つことはできません。
プロバイダー、ファクトリー、リゾルバーなどを見てきましたが、適切な解決策が見つかりませんでした。
どんな助けでも大歓迎です!乾杯