2

我正在生成 HTML 以发送到 PDF 生成器,并在 Stackoverflow 上发现了这个问题。它指向Paris Polyzos和他的文章。在 .Net Core 3.0 中实现代码后,出现以下错误:

Cannot resolve scoped service 'Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers.IViewBufferScope' from root provider.

有没有人想过如何解决这个问题?

4

1 回答 1

3

我遇到了同样的问题,因为我需要将 HTML 视图呈现为字符串。我设法通过使用 IServiceScopeFactory 来解决它。您需要注入一个 IServiceScopeFactory(例如通过构造函数),然后使用该 IServiceScopeFactory 使用 CreateScope() 方法创建一个范围,然后将该范围的 ServiceProvider 提供给 HttpContext RequestServices 属性。例如:

class MyRendererService
{
   private readonly IServiceScopeFactory _serviceScopeFactory {get; set;}
   
   public MyRendererService(IServiceScopeFactory serviceScopeFactory)
   {
     _serviceScopeFactory = serviceScopeFactory;
   }

   public void MyRenderingMethod()
   { 
      using (var scope = _serviceScopeFactory.CreateScope())
      {
         
         var httpContext = new DefaultHttpContext() { RequestServices = scope.ServiceProvider };

         // The rest of your Html rendering code here...
      }
      
   }
}

我知道自从您一个多月前提出这个问题以来,您可能已经解决了这个问题,但它也可能对其他人有所帮助。

于 2020-10-13T14:44:58.803 回答