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
相关产品推荐
相关产品推荐

