IIS / ASP.NET找不到我的Web应用二进制文件

时间:2019-04-09 20:06:02

标签: asp.net iis

Windows 10 Pro下的

IIS 10.0。 ASP.NET 4.7

请考虑这是一个新手问题-自从我使用IIS以来已经有一段时间了。

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

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

  

描述:资源解析期间发生错误   需要处理此请求。请查看以下具体内容   解析错误详细信息并适当地修改您的源文件。

     

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

     

源错误:

     

第1行:<%@ Application Codebehind =“ Global.asax.cs”   Inherits =“ WingtipToys.Global”语言=“ C#”%>

     

源文件:/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文件夹中。在我看来,这是多余的。)

我一定很想念东西。

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

1 个答案:

答案 0 :(得分:0)

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

我不再需要“添加程序集= *”解决方法-看起来ASP.NET再次在BIN文件夹中找到了所需的东西。 ASP.NET还存在另一个错误,即找不到ASPX文件的生成提供程序。此其他错误也消失了。

希望这对以后的人有帮助。感谢您的答复!