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

Blazor WASM项目配置Serilog日志关联遇Host属性不存在错误

问题分析与解决方案

错误原因

你使用的是**Blazor WebAssembly (WASM)**项目,WebAssemblyHostBuilder和ASP.NET Core Server端的HostBuilder架构不同,它本身并不包含Host属性,所以直接调用builder.Host.UseSerilog会触发该错误。WASM项目的日志配置逻辑和Server端存在差异。

正确配置步骤

1. 调整Serilog初始化方式

在WASM项目中,需要直接初始化Log.Logger,再将Serilog注入到日志系统中,而非通过Host扩展方法配置。

2. 修正Program.cs代码

替换原来的builder.Host.UseSerilog代码块,修改后的完整代码如下:

using System;
using System.Net.Http;
using System.Threading.Tasks;
using BlazorAdmin;
using BlazorAdmin.Services;
using Blazored.LocalStorage;
using BlazorShared;
using BlazorShared.Models;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Enrichers.CorrelationId;
using Serilog.Formatting.Json;

// 先初始化Serilog配置
Log.Logger = new LoggerConfiguration()
    .Enrich.WithCorrelationIdHeader("TRACE.ID")
    .Enrich.FromLogContext()
    // Blazor WASM运行在浏览器沙箱中,无法直接访问本地文件系统,需替换为支持WASM的Sink
    .WriteTo.BrowserConsole(new JsonFormatter()) // 使用浏览器控制台输出,需安装Serilog.Sinks.BrowserConsole包
    // 注意:需确认Elastic APM的CorrelationInfo Enricher支持WASM环境,不支持则注释该行
    // .Enrich.WithElasticApmCorrelationInfo()
    .CreateLogger();

var builder = WebAssemblyHostBuilder.CreateDefault(args);

// 将Serilog添加到日志系统
builder.Logging.AddSerilog();

builder.Services.AddHttpContextAccessor();

builder.Services.AddHttpClient("externalapi-client", c =>
{
    c.BaseAddress = new Uri("https://localhost");
});

// 其他服务配置...

await builder.Build().RunAsync();

3. 关键注意事项

  • WASM文件写入限制:浏览器沙箱禁止直接访问本地磁盘(如D:\\log\\web1.log.txt这类路径),必须使用支持WASM的日志Sink,比如Serilog.Sinks.BrowserConsole(需单独安装),或者通过API将日志发送到后端服务存储。
  • Elastic APM兼容性:WithElasticApmCorrelationInfo需要确认是否支持WASM环境,若不兼容建议改用后端日志关联方案。
  • 必要包依赖:确保安装以下NuGet包:
    • Serilog.AspNetCore
    • Serilog.Enrichers.CorrelationId
    • Serilog.Sinks.BrowserConsole

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:45:32