【问题标题】: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...
}
}
}
我知道你可能已经解决了这个问题,因为你在一个多月前提出了这个问题,但它也可能对其他人有所帮助。