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

.NET7 Worker Service在Linux容器运行失败:缺失框架依赖

问题分析与解决方案

问题根源

你的lib.Utils类库中添加了<FrameworkReference Include="Microsoft.AspNetCore.App" />,这个依赖属于ASP.NET Core运行时组件。但当前Worker Service的Docker镜像使用的是mcr.microsoft.com/dotnet/runtime:7.0基础镜像——该镜像仅包含.NET基础运行时,不包含ASP.NET Core的框架组件,因此容器启动时会提示找不到Microsoft.AspNetCore.App 7.0.0框架。而你的API项目能正常运行,是因为API通常使用mcr.microsoft.com/dotnet/aspnet:7.0镜像,该镜像内置了ASP.NET Core运行时。

解决方案

根据你的实际需求选择以下方案之一:

方案1:保留ASP.NET Core依赖,更换Docker基础镜像

如果lib.Utils确实需要ASP.NET Core的相关功能,将Dockerfile的基础镜像替换为ASP.NET Core runtime镜像:

修改Dockerfile的第一行:

# 原内容
FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base

# 修改为
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base

修改后重新构建镜像并运行,ASP.NET Core运行时组件会被包含在镜像中,满足依赖需求。

方案2:移除不必要的ASP.NET Core依赖

如果lib.Utils不需要ASP.NET Core的功能,检查后发现AutoMapper.Extensions.Microsoft.DependencyInjection包并不依赖ASP.NET Core框架(它可以在普通.NET应用中正常使用),因此可以直接移除类库中的框架引用:

编辑lib.Utils.csproj,删除以下内容:

<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

修改后,类库仅依赖基础.NET Runtime,使用原来的dotnet/runtime:7.0镜像即可正常运行。

验证步骤

  1. 应用上述任一修改后,清理本地Docker镜像缓存
  2. 重新执行镜像构建命令:docker build -t your-service-name .
  3. 启动容器:docker run your-service-name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:17:29