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

ASP.NET Core 6.0.20部署后RuntimeCompilation找不到Antiforgery.dll问题

解决ASP.NET Core 6.0.20 x86部署后RuntimeCompilation找不到引用程序集的问题

问题核心原因

你的ASP.NET Core 6.0.20 x86应用本地发布运行正常,但部署到服务器后,使用Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation生成邮件HTML的页面报错System.InvalidOperationException,提示找不到Microsoft.AspNetCore.Antiforgery.dll。本质是RuntimeCompilation编译Razor视图时,会从发布目录下的refs文件夹查找依赖程序集,而你未将该目录上传至服务器。你添加的<PreserveCompilationReferences>和<PreserveCompilationContext>配置仅用于保留编译上下文,不会自动将依赖复制到程序根目录,因此无法解决该问题。

可行解决方案

方案1:完整上传发布生成的refs目录

本地发布应用后,发布目录下会自动生成refs文件夹,其中包含RuntimeCompilation编译Razor视图所需的所有引用程序集。只需将该文件夹完整上传到服务器的程序根目录,与主exe文件同级即可。此方法无需修改代码或配置,是最直接的解决方式。

方案2:修改发布配置,合并依赖到单文件

如果不想单独维护refs目录,可以通过修改.csproj配置,将所有依赖程序集合并到单个exe文件中:

<PropertyGroup>
  <!-- 启用单文件发布 -->
  <PublishSingleFile>true</PublishSingleFile>
  <!-- 启用自包含发布,包含.NET运行时 -->
  <SelfContained>true</SelfContained>
  <!-- 指定目标运行时为x86 -->
  <RuntimeIdentifier>win-x86</RuntimeIdentifier>
  <!-- 允许提取本地原生库 -->
  <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
</PropertyGroup>

重新发布后,所有依赖会打包到单个exe文件中,部署时只需上传该exe即可,无需额外处理refs目录。注意:单文件发布可能会导致应用启动速度略有下降。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:42