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文件夹中。在我看来,这是多余的。)
我一定很想念东西。
如果您有任何疑问,请告诉我。谢谢!
答案 0 :(得分:0)
我认为,IIS配置中缺少某些内容。我原来的Web应用程序和用于测试它的其他示例Web应用程序被编译为“任何CPU”。在IIS中,我用于这些应用程序的每个应用程序池都将“启用32位应用程序”(在“高级设置”下)设置为False。将每个设置为True后,所有Web应用程序都将按预期工作。
我不再需要“添加程序集= *”解决方法-看起来ASP.NET再次在BIN文件夹中找到了所需的东西。 ASP.NET还存在另一个错误,即找不到ASPX文件的生成提供程序。此其他错误也消失了。
希望这对以后的人有帮助。感谢您的答复!