В комментарии к предоставлен ответ по предоставленной ссылке Вы указали
Я не могу заставить это работать.Я получаю сообщение об ошибке: не удается разрешить службу для типа «Microsoft.AspNetCore.Mvc.Razor.IRazorViewEngine» при попытке активировать «Mvc.RenderViewToString.RazorViewToStringRenderer». '
Обычно это означает, что требуетсяслужба не была зарегистрирована в коллекции служб, поэтому поставщик не может разрешить службу при необходимости.
Этот ответ не относится к дополнительной конфигурации службы и содержит только
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IViewRender, ViewRender>();
}
уже запускался в среде Asp.Net Core, что означало, что службы, добавленные вручную в консольное приложение, уже выполнялись при запуске.
Обратите внимание на этот фрагмент из ответа это было связано с ответом, который вы прокомментировали.
private static void ConfigureDefaultServices(IServiceCollection services) {
var applicationEnvironment = PlatformServices.Default.Application;
services.AddSingleton(applicationEnvironment);
var appDirectory = Directory.GetCurrentDirectory();
var environment = new HostingEnvironment
{
WebRootFileProvider = new PhysicalFileProvider(appDirectory),
ApplicationName = "RenderRazorToString"
};
services.AddSingleton<IHostingEnvironment>(environment);
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProviders.Clear();
options.FileProviders.Add(new PhysicalFileProvider(appDirectory));
});
services.AddSingleton<ObjectPoolProvider, DefaultObjectPoolProvider>();
var diagnosticSource = new DiagnosticListener("Microsoft.AspNetCore");
services.AddSingleton<DiagnosticSource>(diagnosticSource);
services.AddLogging();
services.AddMvc();
services.AddSingleton<RazorViewToStringRenderer>();
}
Важной частью выше является
services.AddMvc();
Это добавит соответствующие зависимости механизма представления в коллекцию сервисов
MvcServiceCollectionExtensions.cs
public static IMvcBuilder AddMvc(this IServiceCollection services) {
//...code removed for brevity
// Default framework order
builder.AddFormatterMappings();
builder.AddViews();
builder.AddRazorViewEngine();
builder.AddRazorPages();
builder.AddCacheTagHelper();
//...code removed for brevity
}
Все остальноекак в настоящее время представлено, является звуком и должен работать как задумано.
Вы должны просмотреть
https://github.com/aspnet/Entropy/tree/93ee2cf54eb700c4bf8ad3251f627c8f1a07fb17/samples/Mvc.RenderViewToString
и следовать аналогичной структуре, чтобы заставить код работать в вашем сценарии.Оттуда вы можете начать вносить свои изменения и отслеживать, где они ломаются.
Модульная природа .Net Core позволяет выполнять такие настройки, так как различные модули могут быть удалены и использованы в других средах.