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

在Windows Server 2012 R2运行DotNet Core控制台应用遇程序集缺失错误

解决Windows Server 2012 R2上.NET Core应用找不到Microsoft.Web.Administration.dll的问题

你遇到的问题核心在于依赖清单指定的Microsoft.Web.Administration版本(11.1.0)和服务器系统环境不兼容,哪怕DLL已经在发布目录里,也没法被正确加载。下面是几个针对性的排查和解决步骤:

1. 先搞清楚系统自带的DLL版本

Windows Server 2012 R2配的是IIS 8.5,对应的系统级Microsoft.Web.Administration.dll版本是8.0.0.0。而你引用的11.1.0版本属于IIS 10+(Windows Server 2016及以上系统)。.NET Core加载这类系统关联DLL时,会优先绑定系统自带版本,而非你发布目录里的文件,这就直接导致了版本不匹配的错误。

2. 调整项目的NuGet包版本

  • 先卸载当前引用的Microsoft.Web.Administration 11.1.0包
  • 安装适配IIS 8.5的版本,比如7.0.0.0,或者在NuGet里搜明确标注支持Windows Server 2012 R2的版本
  • 重新发布项目,确保Application.deps.json里的版本和你安装的包完全一致

3. 检查发布命令的参数细节

虽然你用了win81-x64作为运行时标识符,建议再确认发布命令的完整参数:

dotnet publish -c Release -r win81-x64 --self-contained false

这里--self-contained false表示用框架依赖模式发布(毕竟服务器已经装了.NET Core 2.0.7 runtime),能避免独立发布时可能出现的依赖冲突。

4. 添加运行时绑定重定向(如果必须用高版本)

要是业务需求一定要用11.1.0版本,你可以在项目的runtimeconfig.template.json里加绑定重定向规则,强制应用加载你发布目录里的DLL:

{
  "runtimeOptions": {
    "assemblyBinding": {
      "dependencies": [
        {
          "name": "Microsoft.Web.Administration",
          "publicKeyToken": "31bf3856ad364e35",
          "culture": "neutral",
          "bindingRedirects": [
            {
              "oldVersion": "0.0.0.0-11.1.0.0",
              "newVersion": "11.1.0.0"
            }
          ]
        }
      ]
    }
  }
}

加完之后重新发布,让应用优先用你提供的DLL版本。

5. 验证发布目录里的DLL完整性

最后确认下发布目录里的Microsoft.Web.Administration.dll没损坏:

  • 右键点DLL选“属性”→“数字签名”,检查签名是否有效
  • 可以直接从NuGet包中重新提取该DLL,替换发布目录里的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:14:16