问题描述
我正在生成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.
有人对如何解决这个问题有任何想法吗?
解决方法
由于您需要将HTML视图呈现为字符串,因此我也遇到了同样的问题。我设法通过使用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...
}
}
}
我知道自一个多月前您提出此问题以来,您可能已经解决了该问题,但这也可能对其他人有所帮助。