我已经使用 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 的部分内容,直到它正常工作。还要注意根文件夹和子文件夹之间的继承冲突。