CustomErrors mode ="关闭"

时间:2020-03-06 14:25:50  来源:igfitidea点击:

每次将Web应用程序上载到提供程序时,都会出现错误。由于有customErrors模式,因此我看到的只是默认的"运行时错误"消息,指示我关闭customErrors以查看有关该错误的更多信息。

激怒了,我将我的web.config设置如下:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

而且,我得到的只是愚蠢的远程错误页面,上面没有有用的信息。
我还能做些什么来关闭customErrors !!

解决方案

如果我们仍在访问该页面,则可能是在通过Web.Confg之前它已经爆炸了。

确保ASP.Net拥有它对诸如.Net Framework文件夹,IIS Metabase等之类的权限。我们是否有任何方法可以检查ASP.Net是否已正确安装并在IIS中正确关联?

编辑:格雷格(Greg)的评论发生在我身上之后,我认为我们发布的内容是整个非常小的web.config,还有其他内容吗?如果可以,我们可以发布整个web.config吗?

尝试重新启动应用程序(创建app_offline.htm而不是删除应用程序),如果仍然收到相同的错误消息,请确保仅在web.config中声明一次customErrors或者类似的内容。 web.config中的错误可能会对应用程序产生一些怪异的影响。

你有没有像???这样的特殊字符?在web.config中?如果是这样,请确保将编码设置为utf-8.

该Web应用程序是否设置在网站目录树中任何其他应用程序的下方?检查任何父级web.config文件是否有其他设置(如果有)。另外,将目录设置为IIS中的应用程序目录。

如果我们使用的是MVC预览4,则可能会因为使用HandleErrorAttribute而遇到这种情况。该行为在5中进行了更改,因此如果我们关闭自定义错误,则该行为将不会处理异常。

"关闭"区分大小写。

检查web.config文件中的" O"是否为大写,我已经经历了几次(听起来很简单)

如果可以访问,通常可以在事件查看器中找到有关该错误的更多信息。通过在其machine.config中覆盖自定义错误,或者将零售属性设置为true,提供程序可能也完全阻止了自定义错误的显示(http://msdn.microsoft.com/zh-cn/library/ms228298( VS.80).aspx)。

在过去的几天里,这一直使我发疯,无法绕开它,但终于弄明白了:

在我的machine.config文件中,我在&lt;system.web>下有一个条目:

<deployment retail="true" />

这似乎会覆盖我们在web.config文件中指定的任何其他customError设置,因此将上述条目设置为:

<deployment retail="false" />

现在意味着我可以再次看到需要的详细错误消息。

machine.config位于

32位

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64位

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config

希望可以帮助某人,并节省数小时的拔发时间。

我们也可以尝试在服务器计算机上的浏览器中打开网站。我没有做太多的ASP.NET开发,但是我记得自定义错误的东西有一个设置,它仅在服务器上显示完整的错误文本,这是一种安全措施。

我尝试了这里描述的大多数内容。我正在使用VWD,并且包含默认的web.config文件:

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

我将mode =" RemoteOnly"更改为mode =" Off"。仍然没有喜悦。
然后,我使用IIS管理器,属性,ASP.Net选项卡,编辑配置,然后选择CustomeErrors选项卡。这仍然显示为RemoteOnly。我将其更改为"关闭",最后我可以看到详细的错误消息。

当我检查web.config时,我发现system.web中有两个CustomErrors节点。我刚刚注意到第二个条目(我要更改的条目是在评论中)。因此,请尽量不要使用记事本检查远程服务器上的web.config。

但是,如果我们使用IIS编辑配置工具,它将抱怨web.config中的错误。然后,我们可以排除所有回答" web.config中是否存在XML语法错误"的答案。

为了给这个问题添加更多的情况(因为这是我遇到的问题,因为我遇到了完全相同的问题),这是我的答案:

在我的情况下,我从通用错误中剪切/粘贴了文本,说如果我们想知道问题出在哪里,请输入

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

因此,应该可以解决此问题,但是当然不能解决!我的问题是,在上面的<system.web>节点(在编译和身份验证节点之前)有几行,而在下面的几行有一个结束标记</system.web>。一旦我纠正了这个问题,好了,问题就解决了。我应该做的是仅复制/粘贴以下行:

<customErrors mode="Off"/>

摘录自"我一遍又一遍地做的愚蠢的事情",在"复制并粘贴破坏方式"一章中。

实际上,在托管Web应用程序时我发现的是,我们在本地计算机上开发的代码的版本比托管公司为我们提供的版本更高。如果我们具有管理员权限,则可以在虚拟主机设置下更改Microsoft ASP.NET版本的支持。