CustomErrors mode ="Off"

Rad*_*094 248 asp.net

每次我将webapp上传到提供商时都会出错.由于customErrors模式,我看到的只是默认的"运行时错误"消息,指示我关闭customErrors以查看有关错误的更多信息.

恼怒,我已将我的web.config设置为如下所示:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

而且,我得到的只是愚蠢的远程错误页面,没有任何有用的信息.我还能做些什么来关闭自定义错误!

小智 161

这让我在过去几天一直疯狂,无法解决这个问题,但终于弄清楚了:

在我的machine.config文件中,我有一个条目<system.web>:

<deployment retail="true" />
Run Code Online (Sandbox Code Playgroud)

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

<deployment retail="false" />
Run Code Online (Sandbox Code Playgroud)

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

machine.config位于

32位

%windir%\Microsoft.NET\Framework\[version]\config\machine.config
Run Code Online (Sandbox Code Playgroud)

64位

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 
Run Code Online (Sandbox Code Playgroud)

希望能帮助那里的人,并节省几个小时的拉毛.


jua*_*uan 139

"关闭"区分大小写.

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

  • upvote只是不足以说谢谢! (3认同)
  • 很高兴我十年前的答案帮助了你@ user230910!=) (3认同)
  • @juan:10年后,它也帮助了我.非常不幸的是,从2008年到2018年,我们仍面临着如此微不足道的问题:-( (3认同)

Cyb*_*ist 49

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

在我的情况下,我剪切/粘贴了一般错误中的文本,如果你想看看有什么不对,那就说了

<system.web>
   <customErrors mode="Off"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)

所以这应该已经解决了,但当然不是!我的问题是上面有几行<system.web>节点(编译和认证节点之前),以及一个结束标记</system.web>下面几行.一旦我纠正了这个,好的,问题就解决了.我应该做的只是复制/粘贴这一行:

<customErrors mode="Off"/>
Run Code Online (Sandbox Code Playgroud)

这是我在"复制并粘贴你的毁灭之路"一章中的"我一直在做的蠢事"的历史.


Rub*_*ias 10

对于Sharepoint 2010应用程序,您还应编辑C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.config和定义<customErrors mode="Off" />


Ser*_*gan 7

实际上解决这个问题的一个答案我在这里找到:https://stackoverflow.com/a/18938991/550975

只需将此添加到您的web.config:

<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>
Run Code Online (Sandbox Code Playgroud)

  • 我发现`&lt;httpErrors errorMode =“ Detailed” /&gt;`给了我所有需要的信息。 (3认同)

小智 6

如果您有权访问它,通常可以在事件查看器中找到有关错误的更多信息.您的提供商也可能已经阻止显示自定义错误,可以通过覆盖machine.config或将零售属性设置为true来实现(http://msdn.microsoft.com/en-us/library/ms228298( VS.80).aspx).


小智 6

我尝试了这里描述的大部分内容.我使用的是VWD,默认的web.config文件包含:

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>
Run Code Online (Sandbox Code Playgroud)

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

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

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


Nic*_*ver 5

如果你还在那个页面上,它可能会在通过Web.Config之前爆炸

确保ASP.Net具有.Net Framework文件夹,IIS元数据库等所需的权限.您是否有任何方法可以检查ASP.Net是否已正确安装并在IIS中正确关联?

编辑:在Greg发表评论之后,我发现我发布的是你发布的整个非常小的web.config,还有更多内容吗?如果是这样,你可以发布整个web.config?


mik*_*kel 5

我也有这个问题,但在使用Apache和mod_mono时.对于那种情况下的其他任何人,您需要在更改web.config后重新启动Apache以强制读取新版本.


小智 5

我的问题是我在web.config中定义了这个

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <remove statusCode="500" />
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/Internal" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

  • 替换为`<httpErrors errorMode ="Detailed"`有帮助作为一个例子 (2认同)