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

Azure AppService中ASP.NET Core 6升级Serilog.AspNetCore 7后崩溃求助

问题解决:Azure App Service中ASP.NET Core 6升级Serilog.AspNetCore 7后崩溃

问题根源

Serilog.AspNetCore 7.0.0依赖于Microsoft.Extensions.Logging.Abstractions 7.0.0.0,而你的应用目标框架为.NET 6。Azure App Service的.NET 6运行环境仅预装了该组件的6.x版本,若部署包中未包含7.0.0版本的组件,运行时就会找不到对应的程序集导致崩溃。本地运行正常是因为开发环境从NuGet获取了该组件的7.0.0版本。

解决方案

1. 显式引用缺失的程序集

在你的csproj文件中添加对Microsoft.Extensions.Logging.Abstractions的直接引用,确保该组件被包含在部署包中:

<ItemGroup>
  <!-- 现有包引用 -->
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" />
</ItemGroup>

2. 禁用依赖项剪裁(若启用)

如果你的部署流程或项目启用了PublishTrimmed,可能会移除未显式引用的传递依赖。可以在PropertyGroup中禁用剪裁:

<PropertyGroup>
  <!-- 现有配置 -->
  <PublishTrimmed>false</PublishTrimmed>
</PropertyGroup>

若需要保留剪裁以减小包体积,可单独排除该组件不被剪裁:

<ItemGroup>
  <TrimmerRootAssembly Include="Microsoft.Extensions.Logging.Abstractions" />
</ItemGroup>

3. 回退到兼容的Serilog.AspNetCore版本

如果不想添加额外引用,可将Serilog.AspNetCore降级到6.x版本,该版本依赖于.NET 6兼容的日志抽象组件版本,你已验证此方法有效。

Azure App Service没有与Azure Functions的FunctionsPreservedDependencies或_FunctionsSkipCleanOutput完全等价的配置,但上述方法均可确保所需程序集被包含在部署包中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:07:54