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

NET8 Blazor项目集成Serilog时Serilog.AspNetCore未识别问题求助

.NET8中使用Serilog的解决方案

.NET 8完全支持Serilog,你遇到的Serilog.AspNetCore未被识别问题,主要是因为安装了预发布版本包,以及配置步骤存在疏漏。按以下步骤解决:

1. 替换为稳定版NuGet包

你安装的是带dev后缀的预发布版本,这类版本可能存在兼容性问题。卸载现有相关包,安装适配.NET 8的稳定版:

  • Serilog.AspNetCore(推荐安装8.0.0及以上稳定版)
  • Serilog.Sinks.Console(稳定版如5.0.1)
  • Serilog.Sinks.File(必须安装,因为你用到了文件日志输出)

2. 修正Program.cs的配置顺序与代码

Blazor Server项目中,Serilog配置需要严格遵循正确的执行顺序,且需使用Host.UseSerilog()而非builder.Services.AddSerilog():

using Serilog;

// 先初始化Serilog日志配置
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Console()
    .WriteTo.File("logs/liu_api-.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

try
{
    Log.Information("启动Blazor Server应用");
    var builder = WebApplication.CreateBuilder(args);

    // 将Serilog注册到主机
    builder.Host.UseSerilog();

    // 后续添加Blazor相关服务
    builder.Services.AddRazorPages();
    builder.Services.AddServerSideBlazor();

    var app = builder.Build();

    // 中间件配置
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.MapBlazorHub();
    app.MapFallbackToPage("/_Host");

    app.Run();
}
catch (Exception ex)
{
    Log.Fatal(ex, "应用意外终止");
}
finally
{
    Log.CloseAndFlush();
}

3. 检查命名空间

确保Program.cs顶部引入了必要的命名空间:

using Serilog;

4. 清理重建项目

卸载包后,右键项目选择「清理」,手动删除项目目录下的bin和obj文件夹,重新安装稳定版包后,执行「重建解决方案」。

Serilog官方已发布适配.NET 8的稳定版本,按上述步骤操作后即可正常使用Serilog日志功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:42:42