0

笔记

我已经确定我在下面描述的问题是特定于加载文件中指定的 DLL 文件时遇到的错误web.config。即使在出现错误的情况下,我也想呈现一个用户友好的web.config错误。

尾注

当我的 ASP.Net 应用程序遇到服务器错误时,我希望它向用户显示自定义错误消息,而不是以下默认的可怕消息。

Server Error in '/' Application.

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".


<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.


<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

我编写了一个非常简单的 HTML 页面并将其放在我的应用程序的根目录中。它被称为MaintenancePage.htm。

我已将 web.config 文件设置为以下内容:

<customErrors mode="RemoteOnly" defaultRedirect="MaintenancePage.htm">
  <error statusCode="404" redirect="PageNotFound.aspx" />
</customErrors>

我也试过~/MaintenancePage.htmand http://[mysite]/MaintenancePage.htm。这些选项似乎都不起作用。

我测试的方法是重命名我的项目所依赖的 DLL,然后在 Web 浏览器中加载该站点。我希望既然有一个错误和一个defaultRedirect集合,那么显示错误页面应该没有问题,但是,我显然错了。

我已经搜索过这个问题,似乎大多数人都试图重定向到一个aspx页面,并且在这样做时遇到了错误。许多人甚至报告说他们无法将aspx页面加载为defaultRedirect,但他们可以html加载页面。

我在这里做错了什么?

我应该注意,我正在从公司防火墙外部的不同网络进行测试,因此更改RemoteOnlyOn不是文档中的问题。正如预期的那样,在测试中更改RemoteOnlyOn没有效果。

4

1 回答 1

2

将RemoteOnly更改为On

仅远程:

指定仅向远程客户端显示自定义错误, 向本地主机显示 ASP.NET 错误

此外,您的 URL 可能是绝对的或相对的。

阅读有关 customErrors 设置的更多信息

要在本地观看它:

<customErrors mode="On" defaultRedirect="/MaintenancePage.htm">
  <error statusCode="404" redirect="/PageNotFound.aspx" />
</customErrors>

更简单的测试方法。

  1. 尝试一个错误的 url 并观察你的 404 错误接管
  2. 把它放在你的 default.aspx 页面<% throw new Exception("gaah"); %>

还有一件事要考虑:错误记录。可以通过ELMAH轻松实现。

于 2012-11-20T22:43:43.893 回答