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

.NET 6 Web API中Serilog配置扩展方法迁移及WebApplicationBuilder引用问题

问题还原

我有如下Serilog配置,希望将其迁移为扩展方法:

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog((ctx, lc) => _ = builder.Environment.IsDevelopment()
    ? lc.WriteTo.Console()
    : lc.WriteTo.AzureBlobStorage()); 

但在独立类库中编写以下扩展方法时,无法找到WebApplicationBuilder的引用:

public static void ConfigureSerilog(this WebApplicationBuilder builder)
{
}

报错信息:

找不到类型或命名空间名称“WebApplicationBuilder”(是否缺少 using 指令或程序集引用?)

解决方案
  • 添加必要的框架依赖
    WebApplicationBuilder属于ASP.NET Core框架组件,独立类库需要引入对应的依赖:

    • 使用.NET CLI执行命令:
      dotnet add package Microsoft.AspNetCore.App
      
    • 使用Package Manager Console执行:
      Install-Package Microsoft.AspNetCore.App
      
    • 或直接编辑类库的.csproj文件,添加框架引用(SDK风格项目推荐):
      <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
      </ItemGroup>
      
  • 引入命名空间
    在扩展方法所在的类文件顶部,添加using指令:

    using Microsoft.AspNetCore.Builder;
    using Serilog;
    
  • 实现完整扩展方法
    将Serilog的配置逻辑移入扩展方法:

    public static class SerilogExtensions
    {
        public static void ConfigureSerilog(this WebApplicationBuilder builder)
        {
            builder.Host.UseSerilog((ctx, lc) => 
            {
                if (builder.Environment.IsDevelopment())
                {
                    lc.WriteTo.Console();
                }
                else
                {
                    lc.WriteTo.AzureBlobStorage();
                }
            });
        }
    }
    
  • 在Web项目中调用扩展方法
    在Web项目的Program.cs里直接调用扩展方法即可:

    var builder = WebApplication.CreateBuilder(args);
    builder.ConfigureSerilog();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:20:27