【问题标题】:Web.config Custom Errors mode ConflictWeb.config 自定义错误模式冲突
【发布时间】:2012-10-26 02:56:51
【问题描述】:

我在使用 Web.Config 时遇到了一个重大而重要的问题,我需要查看我的页面的错误并在 asp.net Web 表单和 Web 配置中解决它,但是当发生错误时,我看到另一个错误并且我看到了这个留言:

customErrors 模式为 Off 或 On 或 RemoteOnly,

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

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

【问题讨论】:

  • 自定义错误开启意味着您正在为错误创建自己的页面。像 404 文件未找到等。当您将其设置为关闭时,会向每个人显示错误。如果它是远程的,那么只能从同一台机器上看到错误
  • 您是否在抛出错误。或者你在你的全局文件 Application_Error 方法中写了一些东西?
  • 感谢您的评论,我知道但我想查看错误以进行调试,并且不显示错误
  • 如果您能显示 web.config 文件的当前设置也会很有帮助
  • 它似乎忽略了 customerror 设置,这可能意味着您的 web.config 中存在不相关的错误。检查文件格式是否正确,然后尝试将部分注释掉,直到可以正常工作为止。

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


【解决方案1】:

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

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

将值更改为“假”

<deployment retail="false" />

MSDN Link

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      其次,您可以检查 global.asax。也许您创建的 Response.Redirect 与 customError 中的 defaultRedirect 相同。您可以在这里查看更多详细信息ASP.NET customErrors with mode=remoteOnly and global.asax handling exceptions

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

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

          编码愉快!

          【讨论】:

            【解决方案6】:

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

            但就我所见,

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

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

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

                据我所知,您没有将&lt;customErrors mode="Off" /&gt; 作为&lt;system.web&gt; 节点中的第一个节点。

                如果我猜的话,&lt;compilation targetFramework="x.x"&gt; 节点中有 customErrors 节点。

                您可能将应用程序池设置为另一个版本的 .NET 框架,而不是编写应用程序。确保 &lt;customErrors mode="Off" /&gt; 节点是 &lt;system.web&gt; 节点中的第一个节点,那么它很可能会为您提供详细信息错误消息。

                【讨论】:

                  【解决方案9】:

                  删除这条线对我有用!

                  <customError  />
                  

                  【讨论】:

                    【解决方案10】:

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

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

                    【讨论】:

                      【解决方案11】:

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-02-15
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多