CustomErrors mode =“关”
每次我将我的web应用程序上传到提供商时,都会收到错误消息。 由于customErrors模式,我所看到的只是默认的“运行时错误”消息,指示我closurescustomErrors以查看有关错误的更多信息。
被激怒了,我已经设置我的web.config如下所示:
<?xml version="1.0"?> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>
而且,我得到的只是一个愚蠢的远程错误页面,没有有用的信息。 我还能做些什么来closurescustomErrors!
这几天一直让我疯狂,无法绕过它,但终于搞清楚了:
在我的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
希望能帮助那里的人,并节省几个小时的拉毛。
“关”是区分大小写的。
检查你的web.config文件中的“O”是否大写,我已经经历了几次(听起来很简单)
为了给这个问题添加更多的情况(因为这是我看的地方,因为我有完全相同的问题),这里是我的答案:
在我的情况下,如果你想看看有什么不对的地方,我会从通用错误中剪切/粘贴文本
<system.web> <customErrors mode="Off"/> </system.web>
所以这应该已经修好了,当然不是! 我的问题是有一个<system.web>节点上面的几行(编译和身份validation节点之前)和一个结束标记</system.web>下面几行。 一旦我纠正这个问题,好的,问题就解决了。 我应该做的只是复制/粘贴这一行:
<customErrors mode="Off"/>
这是从“愚蠢的事情我记不住”一书中,在“复制和粘贴你毁灭的道路”一章。
对于Sharepoint 2010应用程序,还应该编辑C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.config
并定义<customErrors mode="Off" />
如果您有权访问,您通常可以在事件查看器中find有关错误的更多信息。 您的提供程序也可能阻止显示自定义错误,方法是在machine.config中覆盖它,或者将retail属性设置为true( http://msdn.microsoft.com/zh-cn/library/ms228298(; VS.80).aspx )。
如果您仍然收到该页面,则可能是在通过Web.Confg之前它已经被炸毁了
确保ASP.Net具有所需的权限,如.Net Framework文件夹,IIS元数据库等等。你有什么办法检查ASP.Net是否正确安装并在IIS中正确关联?
编辑:格雷格的评论后,它发生了我,我认为你张贴的是你的整个非常小的web.config,有更多的呢? 如果是的话,你可以发布整个web.config?
我也有这个问题,但是在使用Apache和mod_mono的时候。 对于那种情况下的其他人,你需要在改变web.config之后重新启动Apache来强制读取新版本。
我尝试了这里描述的大部分内容。 我正在使用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”。 仍然没有喜乐。 然后,我使用IISpipe理器,属性,ASP.Net选项卡,编辑configuration,然后selectCustomeErrors选项卡。 这仍然显示RemoteOnly。 我把它改为Off,最后我可以看到详细的错误信息。
当我检查web.config时,我看到system.web中有两个CustomErrors节点; 而我刚刚注意到,第二项(我正在改变的是在评论中)。 所以尽量不要使用记事本来检查远程服务器上的web.config。
但是,如果您使用IIS编辑configuration的东西,它会抱怨web.config中的错误。 那么你可以排除所有的答案,说:“是否有你的web.config中的XML语法错误”
我的问题是,我有这个定义在我的networkingconfiguration
<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>
实际上解决这个问题的一个答案我在这里find: https : //stackoverflow.com/a/18938991/550975
只需将此添加到您的web.config
:
<configuration> <system.webServer> <httpErrors existingResponse="PassThrough"/> </system.webServer> <configuration>
实际上,我在托pipe我的networking应用程序时发现的问题是,您在本地计算机上开发的代码的版本高于托pipe公司为您提供的版本。 如果您拥有pipe理员权限,则可以在虚拟主机设置下更改Microsoft ASP.NET版本支持
我们有这个问题,这是由于IIS用户无法访问Web服务器上的机器configuration。
我们也遇到了这个错误,在我们的例子中,这是因为应用程序池用户对web.config文件没有权限了。 之所以会失去权限(以前一切都很好),是因为我们在rar文件中备份了一个网站,并且把rar中的web.config的备份版本拖到了网站上。 这似乎已经删除了所有权限的web.config文件,除了我,login用户。
我们花了一段时间才弄清楚这一点,因为我反复检查了文件夹级别的权限,但从来没有在文件级别进行检查。
尝试重新启动应用程序(创build一个app_offline.htm比删除它会做),如果你仍然得到相同的错误信息,请确保你只在web.config中声明了一次customErrors或类似的东西。 web.config中的错误可能会对应用程序造成一些奇怪的影响。
你的web.config中有没有特殊的字符? 如果是这样,请确保编码设置为utf-8。
这个networking应用程序是否设置在网站目录树中的任何其他应用程序? 检查任何父级web.config文件的其他设置,如果有的话。 另外,让你的目录在IIS中被设置为一个应用程序目录。
如果你正在使用MVC预览版4,你可能会遇到这种情况,因为你正在使用HandleErrorAttribute。 行为在5中更改,以便在closures自定义错误时不会处理exception。
您也可以尝试在服务器机器上的浏览器中调出网站。 我不做很多的ASP.NET开发,但我记得自定义错误的东西有一个设置只显示在服务器上的完整的错误文本,作为一个安全措施。
我刚刚处理过类似的问题。 在我的情况下,默认的网站asp.net版本是1.1,而我试图启动一个2.0的Web应用程序。 错误是相当微不足道的,但它不是立即清楚为什么自定义错误不会消失,运行时不会写入事件日志。 明显的解决办法是匹配IIS的Asp.Net选项卡中的版本。
我有同样的问题,但以不同的方式find解决办法。
–
我所做的是,我在IISpipe理器中打开了应用程序池的 高级设置 。
在那里我设置启用32位应用程序为真 。
我遇到了同样的问题,原因是IIS运行的是ASP.NET 1.1,而且该站点需要.NET 2.0。
错误消息没有做任何事情,但让我离开了几个小时。
确保在system.web后面添加
我把它放在节点的末尾,并没有工作。
还要确保你正在编辑web.config而不是web.config,就像我正在做的那样。
如果您正在进行configuration转换,则可能还需要从相关的web.config文件中删除以下行。
<compilation xdt:Transform="RemoveAttributes(debug)" />
在尝试所有的答案后,事实certificate,我的Application_Error
方法有这样的:
Server.ClearError(); Response.Redirect("/Home/Error");
删除这些行并设置固定的问题。 (客户端仍然被redirect到customErrors="On"
的错误页面)。
我遇到了同样的问题,而且我经历了事件查看器应用程序日志,因为发生这种exception而明确提及。 在我的情况例外如下…
exception信息:
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.
我刚刚在应用程序池中更新了密码,并且适用于我。
在某些情况下,web.config的格式不正确也是可能的。 在这种情况下,你必须逐行通过它才能工作。 通常情况下,重写规则是这里的罪魁祸首。