ASP.NET Core 3.1部署到AWS Windows Server时报Microsoft.Extensions.Options加载错误
问题可能的触发原因
- 隐式依赖版本冲突
你新安装的部分Nuget包存在对Microsoft.Extensions.Options5.0.0版本的间接依赖,Nuget还原时默认会向上兼容选用更高版本的依赖项。虽然你项目直接引用的是3.1.10版本,deps.json也仅记录了直接依赖的版本,但间接依赖的版本要求没有被正确兼容处理。本地开发环境存在多版本.NET SDK缓存,可以自动加载对应程序集不触发报错,服务器环境缺少对应版本的本地缓存就会出现加载失败的问题。 - 服务器运行时缺失
目前你仅在服务器上安装了.NET 5.0版本的托管捆绑包和SDK,没有安装.NET Core 3.1版本的运行时/托管捆绑包。当项目存在跨版本依赖时,高版本的ASP.NET Core托管模块无法正确向下兼容加载3.1版本的相关扩展程序集,会默认尝试匹配高版本依赖包触发报错。 - 发布配置与部署残留问题
如果你采用框架依赖模式发布,发布过程没有将间接引用的高版本Microsoft.Extensions.Options包打包到发布目录,会导致服务器运行时找不到对应版本的程序集。如果是覆盖部署到已有站点目录,没有提前清空目标目录,之前部署残留的5.0版本相关dll会和当前3.1版本的程序集产生冲突,触发版本加载错误。 - 绑定重定向规则失效
.NET Core项目默认会自动生成程序集绑定重定向规则,如果你项目配置中禁用了自动绑定重定向,或者站点web.config中存在错误的绑定规则,会导致运行时无法将5.0.0版本的加载请求重定向到你实际引用的3.1.10版本,直接抛出找不到对应程序集的错误。
内容的提问来源于stack exchange,提问作者Udi Aslan
相关产品推荐
相关产品推荐

