【问题标题】:Missing assembly reference when application running in virtual application (IIS)应用程序在虚拟应用程序 (IIS) 中运行时缺少程序集引用
【发布时间】:2025-12-13 02:35:01
【问题描述】:

我的 IIS 中有一个主网站(Net 4.5.2)。然后我创建单独的 webapi(Net 4.7.2) 并将其作为主网站内的虚拟应用程序运行。但是,当我测试 webapi 以获取数据时,它会给我一个关于缺少程序集引用的错误。以下是错误。

解析器错误消息:无法加载文件或程序集“System.Web.Optimization”或其依赖项之一。该系统找不到指定的文件。

然后我将这个缺少的程序集安装到 webapi,然后它就可以正常工作了。

所以,问题是:

  1. 为什么即使我的 webapi 不使用这个程序集,我也需要安装这个程序集?
  2. 是否与在我的主网站内作为虚拟应用程序运行的 web api 有关?还是因为版本不同?
  3. 如何在无需将未使用的程序集安装到 webapi 的情况下跳过此步骤?

【问题讨论】:

  • 您在该解决方案中的某个项目必须引用它?如果它不是一个明显的参考,请对解决方案中的所有 .csproj 文件进行文本搜索。
  • 对不起,我是 Asp.Net 的新手,不太了解。你能给我一些建议吗?
  • 您是否编辑过问题?它没有显示它,但我想我在第一次评论时看到了一个不同的程序集?无论哪种方式this 都可能有所帮助。

标签: c# asp.net iis .net-assembly


【解决方案1】:

我找到了答案。这是因为继承了 IIS 中的嵌套应用程序。 需要在主站点 web.config 中将继承设置为子应用程序 false。这是指向此问题的solution 链接。

<location path="." inheritInChildApplications="false">
  <system.web>
    <!-- ... -->
  </system.web>
</location>

【讨论】: