web.config 中的自定义错误页面未被调用

web.config 中的自定义错误页面未被调用

我已经使用 IIS 错误页面模块为所有非 .NET 页面设置了自定义错误,并且它们运行良好。

我已将标签添加到所有 .net 应用程序文件夹的 web.config 文件中。这应该可以处理用户尝试打开该文件夹中的 .net (.aspx) 页面时遇到的任何错误。设置起来似乎很简单,而且我第一次设置时它就正常工作了。现在,服务器重启后,它就不再工作了。

web.config 文件是:

我也尝试过在 web.config 中使用硬编码路径。


该文件夹设置为 .net 应用程序文件夹,应用程序池 = ASP.NET v4.0

我可以直接浏览到error.aspx和404.aspx文件并从浏览器窗口成功打开它们。

www.mydomain.com/testingDotNet/404.aspx 和 www.mydomain.com/testingDotNet/error.aspx 将正常加载且不会出现任何错误。

但是当我尝试打开一个不存在的页面时:

www.mydomain.com//testingDotNet/nopage.aspx ==> 这应该调用 404.aspx,但我得到的却是 .net 404 页面:

找不到资源。描述:HTTP 404。您正在寻找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

请求的 URL:/testingDotNet/nopage.aspx

我运行了失败请求跟踪,但我真的无法从中解读出任何东西。结果(错误显示之前的代码部分)是:失败原因 STATUS_CODE 触发状态 404 最终状态 404 131。NOTIFY_MODULE_START

ModuleName="CustomErrorModule", 通知="SEND_RESPONSE", fIsPostNotification="false", fIsCompletion="false"

19:30:02.278

132. 一般_未_发送_自定义_错误

原因="SETSTATUS_TRYSKIP"

19:30:02.278

133. 通知模块结束

ModuleName="CustomErrorModule", 通知="SEND_RESPONSE", fIsPostNotificationEvent="false", 通知状态="NOTIFICATION_CONTINUE"

19:30:02.278

134. HTTPSYS_CACHEABLE

HttpsysCacheable="false", 原因="NO_PIPELINE_ENABLE", CachePolicy="NO_CACHE", TimeToLive="0"

19:30:02.278

135. 我 GENERAL_FLUSH_RESPONSE_START
19:30:02.278 136. 我 GENERAL_RESPONSE_HEADERS

Headers="Cache-Control: private Content-Type: text/html; charset=utf-8 服务器:Microsoft-IIS/7.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET "

19:30:02.278

137. 一般响应实体缓冲区

Buffer=" 无法找到资源。

无论我是远程调用该页面还是在服务器上调用,我都会得到相同的响应页面。我期望自定义页面显示在远程计算机的调用中,因为自定义错误模式设置为“RemoteOnly”。但即使我将模式设置为“关闭”,行为也不会改变。

这似乎是一个非常简单的任务。奇怪的是,当我第一次配置它时它可以工作,但现在它却不工作了。我已经停止并重新启动了 IIS,然后重新启动了服务器。这让我觉得我疯了!任何关于为什么会发生这种情况的帮助都将不胜感激。

答案1

随着时间的推移,我发现自定义错误不起作用,这几乎总是因为 web.config 文件中的其他内容关闭。要排除故障,请尝试使用设置了 customErrors 的基本 web.config。这可能会奏效。然后开始添加 web.config 的部分内容,直到它正常工作。还要注意根文件夹和子文件夹之间的继承冲突。

相关内容