Web.config自定义错误模式冲突

时间:2012-11-06 07:19:45

标签: asp.net asp.net-mvc asp.net-mvc-3 web-config

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

  

customErrors模式为Off或On或RemoteOnly,

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

enter image description here

enter image description here

当我将模式设置为开时,请说将customErrors模式设置为On Again。

enter image description here

enter image description here

11 个答案:

答案 0 :(得分:16)

  

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

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

将值更改为“false”

<deployment retail="false" />

<强> MSDN Link

答案 1 :(得分:4)

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

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

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

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

答案 2 :(得分:4)

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

其次,您可以检查global.asax.may,您可以创建Response.Redirect,与customError中的defaultRedirect相同。您可以在ASP.NET customErrors with mode=remoteOnly and global.asax handling exceptions

查看更多详细信息

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

答案 3 :(得分:3)

要显示调试错误而不显示自定义错误页面,您不需要defaultRedirect,只需输出调试/异常信息即可:

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

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

答案 4 :(得分: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");
    }

第二次使用label:

创建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开始。点击您的按钮,错误将显示在您的自定义页面上。

快乐的编码!

答案 5 :(得分:1)

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

但是我看到了,

我认为您所说的是在本地计算机上使用IIS Express调试。 我会完成IIS Express,或ctrl + F5页面查看该网站是否没有被缓存。

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

自定义错误关闭 - 指定禁用自定义错误。这样可以显示详细错误。

答案 6 :(得分:1)

我从未见过它说过设置为On。我已经看到它说set customeErrors为off会给你详细的错误。将其设置为关闭,然后将您看到的实际错误消息添加到此帖子。你肯定没有得到像404错误那样的不同消息吗?

答案 7 :(得分:1)

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

如果我猜测,您在<compilation targetFramework="x.x">节点内有customErrors节点。

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

答案 8 :(得分:1)

删除此行对我有用!

<customError  />

答案 9 :(得分:1)

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

如果您告诉我们您正在使用的具体网络托管,我们应该能够更好地协助具体步骤。

答案 10 :(得分:-1)

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