我已经创建了自己的Web框架,该框架将截获错误404并根据URL显示适当的内容(当URL有效或无效时,它还会发送正确的HTTP代码200或404)。我将整个框架放在单个 /Default.asp 下(其中包含多个文件,但这并不重要)。它在IIS6下可以完美运行,但是我无法弄清楚如何在IIS7下进行调试和开发。
面临的挑战是为web.config文件选择正确的错误模式。 如果设置 errorMode = Custom ,则我的代码可以正常工作,甚至在开发过程中也可以看到代码中的错误,但是我无法调试其他ASP文件,因为那里的任何错误都将重定向到< strong> /default.asp ,而不是在浏览器中显示给我。
因此,当我需要调试其他ASP文件时,我会将错误模式从“自定义”更改为 errorMode = Detailed
然后我可以轻松地看到行号和错误描述,但这显然意味着我的框架将无法处理不存在的URL的错误404。
每次进行检查时,我一直在进行这种“跳舞”切换 web.config ,这变得非常烦人。这是我的 web.config 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- I'm changing Custom to Detailed here when I need to debug -->
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath=""
path="/Default.asp" responseMode="ExecuteURL" />
<!-- I have experimented with this, but unsuccessfully, so I comment it out
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" prefixLanguageFilePath=""
path="/Default.asp" responseMode="ExecuteURL" />
-->
</httpErrors>
<directoryBrowse enabled="false" />
</system.webServer>
</configuration>
是否可以同时使用两种方法?
一个自定义.ASP文件,用于处理404错误(以及其他可能的错误),但还剩下500个错误要由服务器处理并显示详细的错误。
我只需要查看行号和错误说明即可。