【问题标题】:Return View as String in .NET Core 3.0在 .NET Core 3.0 中以字符串形式返回视图
【发布时间】:2020-12-27 08:10:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# razor asp.net-core-3.0 razorengine razorgenerator


    【解决方案1】:

    我遇到了同样的问题,因为我需要将 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...
          }
          
       }
    }
    

    我知道你可能已经解决了这个问题,因为你在一个多月前提出了这个问题,但它也可能对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-04-16
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多