我正在新的 64 位服务器上配置 IIS7.5 来处理使用少量 32 位组件和 MS Access 数据库的旧网站。
我已成功设置应用程序池以支持 32 位 - 以便 Jet4.0 和旧组件可以正常工作。
但是,IIS 的工作方式很奇怪:当使用 32 位标志启用应用程序池时,如果出现错误(我试图引发除以零的错误,因此出现 500 错误和 404 未找到),它不会显示任何错误页面,而只显示一个完全空白的页面。
如果在脚本执行过程中发生 500 错误,脚本将显示其输出,直到发生错误,然后默默停止。该网站配置为使用默认 IIS 错误页面,因此没有错误页面的自定义设置。
如果禁用 32 位应用程序池,则不会发生这种奇怪的行为。在这种情况下,一切正常。
我在谷歌上搜索了一下,发现其他人也遇到了这个问题,但我还没有找到任何解决方案。
答案1
我自己找到了解决方案,我想与社区分享:
- 问题是由网站属性的 ASP/调试功能中的“启用服务器端调试”选项引起的。如果将该选项设置为“True”,IIS 根本不会显示任何错误,而是空白页。将其设置为“False”,则错误会照常显示。
仅当启用了 32 位应用程序池时才会发生此行为。如果禁用 32 位,即使将“启用服务器端调试”设置为 True,也会显示错误。显然,64 位服务器上的 32 位应用程序池之间的错误消息处理存在问题。