如何配置 Web.Config 文件以允许自定义 404 处理,同时仍显示页面 500 错误详细信息?

如何配置 Web.Config 文件以允许自定义 404 处理,同时仍显示页面 500 错误详细信息?

为了自定义 404 处理并根据托管公司的建议,我们目前使用以下 web.config 设置。但是,我们很快意识到,使用此配置,任何页面错误(500 错误)也会重定向到此自定义错误页面。我该如何修改此配置文件,以便我们可以继续使用自定义文件处理 404,同时仍能查看页面上的错误?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>

答案1

尝试这个 -

<configuration>
   <system.webServer>
      <httpErrors errorMode="Custom" defaultResponseMode="File" >
         <remove statusCode="404" />
         <remove statusCode="500" />
         <error statusCode="404" 
            path="404.html" />
         <error statusCode="500" 
            path="500.html" />
       </httpErrors>
   </system.webServer>
</configuration>

404 错误页面是 404.html,它位于我的根目录中,同样 500 页面

答案2

默认情况下,传统 ASP 不会通过 IIS7 中的错误。要为站点启用此功能,请从命令行运行以下命令,确保将 {sitename} 替换为您的站点名称:

c:\windows\system32\inetsrv\appcmd.exe 设置配置“{sitename}”-section:system.webServer/httpErrors /existingResponse:“PassThrough”/commit:apphost

此外,请确保离开IIS 友好错误。它们确实不友好。

答案3

我发现 IIS 7.5 中的 Classic ASP 有很多复杂的解决方法,用于处理特定错误代码(通常为 404)的 IIS 6 类型的自定义错误处理。我希望这可以帮助偶然发现它的人。

我正在运行 IIS 7.5 R2,但我认为这通常适用于 IIS 7。

如果您的 web.config 文件中包含以下内容:

<customErrors mode="On">

...在 IIS 管理器中,您可能选择了“错误页面”下的“编辑功能”来更改“编辑错误页面设置”面板上的功能。如果您将其更改为“自定义错误页面”(customErrors 模式=“On”),则必须设置对每个错误号的处理。所以不要这样做。

您所要做的就是右键单击要处理的错误编号,然后选择“编辑”。在那里,您可以指向您创建的自定义错误页面或重定向到 URL。我总是建议重定向到主页,并在查询字符串中添加一些内容,例如 ?syserror,然后您可以从主页处理这些内容,而不是创建一个自定义错误页面,当您的网站设计或菜单发生变化时,您必须记住更新它。我的技术是在主页脚本中检查这一点,并弹出一条友好的消息,让他们知道他们的页面没有找到,他们被定向到主页。

您的 web.config 文件看起来应该像这样:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" 
path="http://yoursite.com/index.asp?syserror" responseMode="Redirect" />
</httpErrors>

我还建议您不要在生产网站上启用详细的错误消息,以防万一,即使是本地网站也是如此。只需在系统日志中查找详细信息即可。

这只是我的看法,希望对您有所帮助,如果您认为我在这里说的有任何错误,请告诉我。

答案4

只需为 500 错误添加另一个值。

<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>

相关内容