You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8中使用Microsoft.AspNetCore.Mvc.Razor替代RazorEngine遇依赖错误求助

解决方案:.NET Framework 4.8下适配Microsoft.AspNetCore.Mvc.Razor的服务注册

你的错误源于服务容器中缺少Razor视图渲染所需的基础依赖服务。ASP.NET Core的Razor组件依赖ILoggerFactory、文件系统提供者等核心服务,而AddMvcCore().AddRazorViewEngine()并未自动注册这些依赖。以下是适配.NET Framework 4.8的修正步骤:

1. 安装必要的NuGet包

确保已安装以下包:

  • Microsoft.AspNetCore.Mvc.Razor
  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.Logging.Console
  • Microsoft.Extensions.FileProviders.Physical

2. 完善服务注册代码

修改你的测试代码,补充日志服务、文件系统服务及视图特性服务:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.FileProviders;
using System.IO;

static void Main(string[] args)
{
    var services = new ServiceCollection();

    // 添加日志服务,解决ILoggerFactory依赖
    services.AddLogging(builder =>
    {
        builder.AddConsole();
        // .NET Framework下也可添加EventLog等其他日志提供器
        // builder.AddEventLog();
    });

    // 添加文件系统服务,Razor视图需要读取文件
    var contentRoot = Directory.GetCurrentDirectory(); // 替换为你的视图根目录
    services.AddSingleton<IFileProvider>(new PhysicalFileProvider(contentRoot));

    // 添加MvcCore及Razor视图引擎、视图特性服务
    services.AddMvcCore()
            .AddRazorViewEngine()
            .AddViewFeatures(); // 补充TempData相关依赖

    // 注册RazorViewToStringRenderer
    services.AddSingleton<RazorViewToStringRenderer>();

    var provider = services.BuildServiceProvider();
    var service = provider.GetRequiredService<RazorViewToStringRenderer>();
}

3. 额外注意事项

  • 确保你的Razor视图文件(.cshtml)放在正确目录下,默认从Views文件夹查找,可通过配置RazorViewEngineOptions自定义路径:
    services.Configure<RazorViewEngineOptions>(options =>
    {
        options.ViewLocationFormats.Add("/CustomViews/{0}.cshtml");
    });
    
  • 若RazorViewToStringRenderer依赖IHttpContextAccessor,需额外注册:
    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    

内容的提问来源于stack exchange,提问作者user79517

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:01:45