在虚拟应用程序 (IIS) 中应用程序 运行 时缺少程序集引用

Missing assembly reference when application running in virtual application (IIS)

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

Parser Error Message: Could not load file or assembly 'System.Web.Optimization' or one of its dependencies. The system cannot find the file specified.

然后我将这个丢失的程序集安装到网络上api,然后它就可以正常工作了。

所以,问题是:

  1. 为什么我的网站 api 没有使用这个程序集,但我需要安装这个程序集?
  2. 它是否与网络有关 api 运行 作为我主网站中的虚拟应用程序?还是因为版本不同?
  3. 如何跳过此步骤而不需要将未使用的程序集安装到 Webapi?

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

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