我对 Web.Config 有一个重大而重要的问题,我需要查看我的页面的错误并在 asp.net Web 表单和 Web 配置中解决它,但是当发生错误时,我看到另一个错误并且我看到此消息:
customErrors 模式为 Off 或 On 或 RemoteOnly,
我将此属性设置为 Off,但不显示错误并再次说请将属性设置为 On your CustomError。
当我将模式设置为开时,请说请将 customErrors 模式再次设置为开。
我对 Web.Config 有一个重大而重要的问题,我需要查看我的页面的错误并在 asp.net Web 表单和 Web 配置中解决它,但是当发生错误时,我看到另一个错误并且我看到此消息:
customErrors 模式为 Off 或 On 或 RemoteOnly,
我将此属性设置为 Off,但不显示错误并再次说请将属性设置为 On your CustomError。
当我将模式设置为开时,请说请将 customErrors 模式再次设置为开。
当您遇到配置问题时,请确保您的设置未被覆盖。
在这种情况下,您的服务器可能具有<deployment retail="true" />
覆盖应用程序设置并禁用跟踪输出、自定义错误和调试功能的配置。
将值更改为“假”
<deployment retail="false" />
确保将 customErrors 标记嵌套在标记内的某个位置,<system.web>
如下所示:
<system.web>
<customErrors mode="Off" />
</system.web>
根据您的描述,它很可能是您放置在那里或以其他方式自动生成的。也尝试设置为 On 并重新启动应用程序池。您可以通过简单地web.config
通过添加中断返回来修改文件来做到这一点,或者甚至只需按空格键,只要您进行了更改。现在重新上传,确保这是您第二次将 customErrors 模式设置为 On。希望您现在可以查看自定义错误页面。
如果您仍然有问题,并且可以从 IIS 管理器访问您的网站,请尝试在功能视图中编辑 .NET 错误页面。这也将做同样的事情,前提是您的自定义错误页面位于web.config
文件要访问的正确目录中。
首先,您可以将 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"/>
要显示调试错误而不显示自定义错误页面,您不需要 adefaultRedirect
并且简单地拥有它然后应该输出调试/异常信息:
<system.web>
<customErrors mode="On" />
</system.web>
注意:确保On
以大写O开头。通过更改 web.config,这应该(默认情况下)回收您的应用程序池并立即被拾取。
这是如何在自定义页面上显示异常的示例代码。
首先使用按钮创建 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 开始。单击您的按钮,错误将显示在您的自定义页面上。
快乐编码!
我只是想在这里发表评论,但我没有足够的评论点,我们可以查看产生错误的实际页面并查看整个 web.config 吗?您可以模糊连接字符串等,以免泄露任何密码。
但就我所见,
我认为从你所说的你正在本地机器上使用 IIS Express 调试。我会完成 IIS Express,或者 ctrl+F5 页面来查看站点是否没有被缓存。
将自定义错误设置为 Off 将向您显示调试消息 - 注意 Off 中的“O”必须用 f 的小写字母大写。看起来你有这个,但值得一提
自定义错误关闭 - 指定禁用自定义错误。这允许显示详细的错误。
我从来没有见过它说设置为开。我已经看到它说将 customeErrors 设置为 off,这将为您提供详细的错误。将其设置为关闭,然后将您看到的实际错误消息添加到此帖子中。你确定你没有收到像 404 错误这样的不同消息吗?
据我所知,您没有<customErrors mode="Off" />
作为节点中的第一个<system.web>
节点。
如果我猜的话,你在一个节点中有 customErrors<compilation targetFramework="x.x">
节点。
您可能将应用程序池设置为另一个版本的 .NET 框架,而不是编写应用程序。确保该<customErrors mode="Off" />
节点是该节点中的第一个<system.web>
,然后它很可能会给您详细的错误消息。
删除这条线对我有用!
<customError />
许多托管公司实际上覆盖了他们的 web.config 文件中的设置。您通常可以在网站的虚拟主机仪表板中设置这些具体属性。
如果您告诉我们您正在使用的具体虚拟主机,我们应该能够通过具体步骤提供更好的帮助。
将模式设置为开,保存 web.config 然后刷新或重新启动 IIS,并确保模式在保存后仍设置为开。再次浏览它,它应该显示错误...