CustomErrors mode =“Off”

时间:2008-09-19 13:08:10

标签: asp.net

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

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

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

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

30 个答案:

答案 0 :(得分:154)

过去几天这让我疯了,无法绕过它,但终于明白了:

在我的machine.config文件中,我在<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 

希望帮助那里的人,并节省几个小时的拉头。

答案 1 :(得分:134)

“关闭”区分大小写。

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

答案 2 :(得分:48)

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

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

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

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

<customErrors mode="Off"/>

这是来自“我一直在做的愚蠢事情的历史”,在题为“复制并粘贴你的毁灭之路”的章节中。

答案 3 :(得分:10)

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

答案 4 :(得分:7)

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

只需将其添加到web.config

即可
<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>

答案 5 :(得分:6)

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

答案 6 :(得分:6)

我尝试了这里描述的大部分内容。我使用的是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语法错误”

答案 7 :(得分:5)

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

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

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

答案 8 :(得分: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>

答案 9 :(得分:5)

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

答案 10 :(得分:2)

实际上,我在托管我的网络应用程序时想到的是,您在本地计算机上开发的代码版本高于托管公司为您提供的版本。如果您具有管理员权限,则可以在Web托管设置

下更改Microsoft ASP.NET版本支持

答案 11 :(得分:2)

我们遇到了这个问题,原因是IIS用户无法访问Web服务器上的计算机配置。

答案 12 :(得分:2)

我们也遇到了这个错误,在我们的例子中,这是因为应用程序池用户不再拥有web.config文件的权限。它失去了权限(以前一切都很好)的原因是因为我们在rar文件中备份了网站,并将web.config的备份版本从rar拖到了网站中。这似乎删除了web.config文件的所有权限,除了我,登录用户。

我们需要一段时间来解决这个问题,因为我反复检查了文件夹级别的权限,但从未在文件级别上检查过。

答案 13 :(得分:1)

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

答案 14 :(得分:1)

我有同样的问题,但以不同的方式找到了决心。

-

我做的是,我为 IIS管理器中的应用程序池打开了高级设置

我将启用32位应用程序设置为 True

答案 15 :(得分:1)

我刚刚处理过类似的问题。在我的情况下,默认网站asp.net版本是1.1,而我正在尝试启动2.0网络应用程序。错误非常简单,但是并不是很清楚为什么自定义错误不会消失,而运行时从未写入事件日志。明显的解决方法是匹配IIS的Asp.Net选项卡中的版本。

答案 16 :(得分:1)

您还可以尝试在服务器计算机上的浏览器中打开网站。我没有做很多ASP.NET开发,但我记得自定义错误的东西只有在服务器上显示完整的错误文本,作为安全措施。

答案 17 :(得分:1)

如果您正在使用MVC预览版4,则可能会遇到此问题,因为您正在使用HandleErrorAttribute。行为在5中更改,因此如果您关闭自定义错误,则不会处理异常。

答案 18 :(得分:1)

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

答案 19 :(得分:1)

你的web.config中有没有像æøå这样的特殊角色?如果是这样,请确保编码设置为utf-8。

答案 20 :(得分:0)

我遇到了同样的问题,原因是IIS运行的是ASP.NET 1.1,并且该站点需要.NET 2.0。

错误消息没有做任何事情,但让我偏离了几个小时。

答案 21 :(得分:0)

确保添加      就在system.web之后

我把它放在节点的末尾并且不起作用。

答案 22 :(得分:0)

另外,请确保您正在编辑web.config而不是像我一样编辑website.config。

答案 23 :(得分:0)

如果您正在进行配置转换,您可能还需要从相关的web.config文件中删除以下行。

<compilation xdt:Transform="RemoveAttributes(debug)" />

答案 24 :(得分:0)

在这里尝试了所有答案后,结果发现我的Application_Error方法有这个:

Server.ClearError();
Response.Redirect("/Home/Error");

删除这些行并设置修复问题。 (客户端仍然被重定向到customErrors="On"的错误页面。)

答案 25 :(得分:0)

我遇到了同样的问题,我浏览了事件查看器应用程序日志,它清楚地提到了由于发生了哪个例外。在我的情况下,例外情况如下......

异常信息:

Exception type: HttpException 
Exception message: The target principal name is incorrect.  Cannot generate SSPI context.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

The target principal name is incorrect.  Cannot generate SSPI context.

我刚刚在应用程序池中更新了密码,它对我有用。

答案 26 :(得分:0)

在某些情况下,也可能无法正确格式化web.config。在这种情况下,你必须逐行完成它才能工作。通常,重写规则是罪魁祸首。

答案 27 :(得分:0)

那真的很奇怪。我收到此错误,并在重新启动服务器后消失了。

答案 28 :(得分:0)

对我来说,这是在system.web上方的web.config中更高的错误。

文件不存在,因此此时抛出一个错误。因为它尚未到达System.Web部分,所以它正在使用CUstomErrors(On)的服务器默认设置

答案 29 :(得分:0)

可能不是IIS!

我仔细阅读了本页上的所有答案以及其他答案。他们中没有一个解决了我们的问题,但是它们是需要检查的好东西,并且会引起问题。所以先检查一下。如果仍在使用PHP,请检查PHP设置。

对我来说解决的是编辑php.ini文件并指定:

F1

我还设置:

display_errors: On

只是为了很好的测量。

这解决了问题,而我们真正的问题却是在开发人员到阶段迁移过程中遗漏的逗号。

我知道此页面已链接到我们也使用过的asp.net,这不是asp.net问题,但是当您搜索这些错误时,此页面出现,并且具有一些可修复大多数问题的好信息常见问题;而不是我们的特定问题。配置更改确实解决了问题,然后我们可以集中精力于asp.net文件!