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

.NET 8进程内Azure Service Bus触发器函数部署后缺失AspNetCore.Routing程序集

问题原因分析

出现这个错误的核心是Azure Functions的.NET 8运行时环境中缺少Microsoft.AspNetCore.Routing 7.0.0.0组件,本地能正常运行但部署后异常的具体原因如下:

  • 间接依赖版本不匹配:你的项目没有直接引用Microsoft.AspNetCore.Routing,但某个间接依赖(比如Grpc.AspNetCore.Server,由其他组件引入)需要7.0版本的该组件。本地开发环境因安装了.NET 7 SDK、其他项目依赖或NuGet缓存,自动补足了这个DLL;但Azure的.NET 8函数运行时默认只预装.NET 8相关组件,没有7.0版本的Microsoft.AspNetCore.Routing,导致部署后找不到。
  • 跨版本包引用引发依赖混乱:项目中System.ServiceModel.Duplex用的是6.0.0版本,而System.ServiceModel.Http、System.ServiceModel.NetTcp是8.0.0版本,这种跨大版本的引用会让依赖树出现低版本.NET组件需求,进而触发对7.0版本Microsoft.AspNetCore.Routing的依赖。
  • Azure部署的依赖裁剪机制:本地运行时.NET会自动加载所有所需依赖DLL,但Azure默认的框架依赖发布模式会裁剪掉它判定为非必需的间接依赖,导致7.0版本的Microsoft.AspNetCore.Routing未被包含在部署包中。
解决建议

针对上述原因,可按以下步骤处理:

  • 统一ServiceModel相关包版本:将System.ServiceModel.Duplex升级到8.0.0版本,和同系列包版本保持一致,消除跨版本依赖冲突。修改后的.csproj对应项:
    <PackageReference Include="System.ServiceModel.Duplex" Version="8.0.0" />
    
  • 直接添加Microsoft.AspNetCore.Routing引用:在.csproj中强制添加该包引用,确保发布时将其包含在部署包内:
    <PackageReference Include="Microsoft.AspNetCore.Routing" Version="7.0.14" />
    
  • 升级Microsoft.NET.Sdk.Functions到最新稳定版:当前使用的4.5.0版本较旧,建议升级到兼容.NET 8的最新版本(如4.28.1),优化依赖匹配度:
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.28.1" />
    
  • 切换发布模式:若上述方法无效,可尝试将发布模式改为自包含(Self-Contained),打包所有依赖DLL到部署包中,避免Azure运行时缺少组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:14:54