23

我对 Web.Config 有一个重大而重要的问题,我需要查看我的页面的错误并在 asp.net Web 表单和 Web 配置中解决它,但是当发生错误时,我看到另一个错误并且我看到此消息:

customErrors 模式为 Off 或 On 或 RemoteOnly,

我将此属性设置为 Off,但不显示错误并再次说请将属性设置为 On your CustomError。

在此处输入图像描述

在此处输入图像描述

当我将模式设置为开时,请说请将 customErrors 模式再次设置为开。

在此处输入图像描述

在此处输入图像描述

4

11 回答 11

18

当您遇到配置问题时,请确保您的设置未被覆盖。

在这种情况下,您的服务器可能具有<deployment retail="true" />覆盖应用程序设置并禁用跟踪输出、自定义错误和调试功能的配置。

将值更改为“假”

<deployment retail="false" />

MSDN 链接

于 2014-01-13T10:35:41.753 回答
5

确保将 customErrors 标记嵌套在标记内的某个位置,<system.web>如下所示:

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

根据您的描述,它很可能是您放置在那里或以其他方式自动生成的。也尝试设置为 On 并重新启动应用程序池。您可以通过简单地web.config通过添加中断返回来修改文件来做到这一点,或者甚至只需按空格键,只要您进行了更改。现在重新上传,确保这是您第二次将 customErrors 模式设置为 On。希望您现在可以查看自定义错误页面。

如果您仍然有问题,并且可以从 IIS 管理器访问您的网站,请尝试在功能视图中编辑 .NET 错误页面。这也将做同样的事情,前提是您的自定义错误页面位于web.config文件要访问的正确目录中。

于 2013-12-06T04:25:56.873 回答
4

首先,您可以将 CustomErrors 模式从“RemoteOnly”设置为“off” <customErrors mode="Off"></customErrors>

其次,您可以检查 global.asax。也许您创建的 Response.Redirect 与 customError 中的 defaultRedirect 相同。您可以在此处查看更多详细信息ASP.NET customErrors with mode=remoteOnly 和 global.asax 处理异常

最后,也许你在你的 webconfig 中创建了两个system.web。您的配置文件中应该只有一个。请再次检查您的 webconfig。不要忘记<compilation debug="true"/>

于 2014-01-20T05:58:56.917 回答
3

要显示调试错误而不显示自定义错误页面,您不需要 adefaultRedirect并且简单地拥有它然后应该输出调试/异常信息:

<system.web>
    <customErrors mode="On" />
</system.web>

注意:确保On以大写O开头。通过更改 web.config,这应该(默认情况下)回收您的应用程序池并立即被拾取。

于 2014-01-16T16:17:08.170 回答
3

这是如何在自定义页面上显示异常的示例代码。

首先使用按钮创建 Default.aspx:

    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Throw Error" />

为按钮单击事件添加以下代码:

    protected void Button1_Click(object sender, EventArgs e)
    {
        throw new Exception("Sample Exception on my Page");
    }

其次创建带有标签的 ErrorPage.aspx:

    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

错误页面的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        if (ex != null && ex.InnerException != null)
        {
            Label1.Text = string.Format("An error occured: {0}", ex.InnerException.Message);
        }
    }

最后在 web.config 中放置以下配置:

    <system.web>
      <customErrors mode="On" defaultRedirect="~/ErrorPage.aspx" redirectMode="ResponseRewrite" />
    </system.web>

编译并从 Default.aspx 开始。单击您的按钮,错误将显示在您的自定义页面上。

快乐编码!

于 2014-01-18T22:14:11.697 回答
1

我只是想在这里发表评论,但我没有足够的评论点,我们可以查看产生错误的实际页面并查看整个 web.config 吗?您可以模糊连接字符串等,以免泄露任何密码。

但就我所见,

我认为从你所说的你正在本地机器上使用 IIS Express 调试。我会完成 IIS Express,或者 ctrl+F5 页面来查看站点是否没有被缓存。

将自定义错误设置为 Off 将向您显示调试消息 - 注意 Off 中的“O”必须用 f 的小写字母大写。看起来你有这个,但值得一提

自定义错误关闭 - 指定禁用自定义错误。这允许显示详细的错误。

于 2014-01-13T18:09:31.033 回答
1

我从来没有见过它说设置为开。我已经看到它说将 customeErrors 设置为 off,这将为您提供详细的错误。将其设置为关闭,然后将您看到的实际错误消息添加到此帖子中。你确定你没有收到像 404 错误这样的不同消息吗?

于 2014-01-15T10:26:15.660 回答
1

据我所知,您没有<customErrors mode="Off" />作为节点中的第一个<system.web>节点。

如果我猜的话,你在一个节点中有 customErrors<compilation targetFramework="x.x">节点。

您可能将应用程序池设置为另一个版本的 .NET 框架,而不是编写应用程序。确保该<customErrors mode="Off" />节点是该节点中的第一个<system.web>,然后它很可能会给您详细的错误消息。

于 2014-01-18T22:57:03.897 回答
1

删除这条线对我有用!

<customError  />
于 2014-01-19T13:05:10.557 回答
1

许多托管公司实际上覆盖了他们的 web.config 文件中的设置。您通常可以在网站的虚拟主机仪表板中设置这些具体属性。

如果您告诉我们您正在使用的具体虚拟主机,我们应该能够通过具体步骤提供更好的帮助。

于 2014-01-20T00:16:55.880 回答
-1

将模式设置为开,保存 web.config 然后刷新或重新启动 IIS,并确保模式在保存后仍设置为开。再次浏览它,它应该显示错误...

于 2013-06-04T01:46:20.017 回答