【问题标题】:IIS/ASP.NET not finding my Web App binariesIIS/ASP.NET 找不到我的 Web 应用程序二进制文件
【发布时间】:2019-04-12 08:34:14
【问题描述】:

Windows 10 Pro 下的 IIS 10.0。 ASP.NET 4.7

请考虑这是一个新手问题——我已经有一段时间没有使用 IIS了。

我正在研究一些似乎只在 IIS 下运行的问题(相对于在 Visual Studio 2017 中运行网站)。因此,我在我的 Windows 开发计算机上安装了 IIS 10.0,并将我的网站发布到 IIS。下面描述的错误不是我正在研究的错误,而是尝试在本地 IIS 上设置我的网站的障碍。

当我尝试访问“主页”页面时,出现解析器错误。

描述:解析资源时出错 需要为该请求提供服务。请查看以下具体内容 解析错误详细信息并适当地修改您的源文件。

解析器错误消息:无法加载类型“WingtipToys.Global”。

来源错误:

第 1 行:

源文件:/global.asax 行:1

(我还尝试运行 Microsoft 的 Wingtip Toys 示例网站,但遇到与我的网站相同的错误。上面显示 Wingtip Toys 错误。)

我的应用程序中有一个 BIN 文件夹(在 IIS 中安装),该文件夹中有一个 WingtipToys.dll,并且(根据 .NET Reflector)DLL 中有一个 WingtipToys.Global 类。

我原以为 ASP.NET 会查找 BIN 文件夹并使用它在其中找到的任何 DLL。

由于 Wingtip Toys 和我的网站在 IIS 下都显示相同的错误,并且在 VS 2017 中都运行良好,我怀疑这可能是我的 IIS 或 ASP.NET 配置错误。

我需要做什么才能让 IIS/ASP.NET 在我的 BIN 文件夹中找到二进制文件?我发现的一个建议是将以下内容放在我的网站 web.config 中:

  <system.web>
      <compilation targetFramework="4.5">
          <assemblies>
              <add assembly="*" />
          </assemblies>
      </compilation>
  </system.web>

虽然这可行,但我们的生产网站(我正在尝试排除故障的网站)显然不需要它。 (另外,我们的生产 web.config 有大约 40 个程序集,它们都在网站 BIN 文件夹中。这在我看来是多余的。)

我一定是错过了什么。

如果您有任何问题,请告诉我。谢谢!

【问题讨论】:

  • GAC 中有 WingtipToys.dll 吗?也许它正在加载旧版本??
  • 我在 GAC 中没有看到 WingtipToys.dll(也没有我的网站 DLL)。只是标准的东西——差不多。谢谢!
  • 我可能会使用 Fusion Logs 看看是否有任何意外:docs.microsoft.com/en-us/dotnet/framework/tools/…
  • 我使用了 Fusion Log 查看器(我过去曾多次使用此工具),但没有发现任何绑定错误。我检查了成功和失败的绑定,在每次尝试之前重新启动 IIS。所有成功的绑定都是针对标准系统/微软程序集的;没有失败的绑定。我没有看到任何尝试绑定到 WingtipToys.dll。可能是在任何尝试绑定之前进程失败。

标签: asp.net iis


【解决方案1】:

正如我所想,我的 IIS 配置中缺少一些东西。我的原始 Web 应用程序和我用来测试的其他示例 Web 应用程序被编译为“任何 CPU”。在 IIS 中,我用于这些应用程序的每个应用程序池都将“启用 32 位应用程序”(在高级设置下)设置为 False。将每个设置为 True 后,所有 Web 应用程序都按预期工作。

我不再需要“添加程序集=*”解决方法——看起来 ASP.NET 又在 BIN 文件夹中找到了它需要的东西。还有一个 ASP.NET 没有找到 ASPX 文件的构建提供程序的附加错误。这个额外的错误也消失了。

希望这对将来的某人有所帮助。感谢您的回复!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2015-03-15
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多