customErrors mode="Off"后如何让它显示详细错误,而不要只显示iis 500错误

Netcean 2014-08-03 11:32:09
一个网站在自己服务器上测试没任何问题,移植到另一台服务器,某些功能出错且只显示500错误,没有任何更详细的错误提示。
空间商一直坚持说是程序上面限制了不显示错误,可web.config并没有做任何限制,在我们自己服务器,如果有错误的话,都能显示具体的错误。
想问下,IIS更改哪个设置可以让它显示具体的错误信息。

以下是我的web.config设置

<system.web>
<compilation debug="true">

<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>

</compilation>
<!--
通过 <authentication> 节,可配置
ASP.NET 用于识别进入用户的
安全身份验证模式。
-->
<authentication mode="Windows" />
<!--
通过 <customErrors> 节,可以配置
在执行请求的过程中出现未处理的错误时要执行
的操作。具体而言,
开发人员通过该节可配置要显示的 html 错误页,
以代替错误堆栈跟踪。

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

这里面并没有隐藏错误的代码设置吧。
...全文
2281 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
全栈极简 2014-08-03
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
如果你发现自己在那里为程序调试而纠结着,那么一定是因为脑子里水货太多。如果超过3个小时还是满脑子水货,那么你应该停下手头原先的工作,先写出1、2个“干货”测试来驱动的活动。不要在原来的问题上跟人家运营商纠结。
  • 打赏
  • 举报
回复
lz是想问设置了 customerErrors mode="Off" 以后 --> lz是想问为什么:设置了 customerErrors mode="Off" 以后
  • 打赏
  • 举报
回复
lz是想问设置了 customerErrors mode="Off" 以后,不显示那个 asp.net 系统的默认的详细错误页面。 不是自定义错误页。
by_封爱 2014-08-03
  • 打赏
  • 举报
回复
这个好说 如果是我 我会写一个类:Page

public class BasePage:Page
我一般习惯于override2个方法..一个是OnInit用来判断用户是否登陆

 protected override void OnInit(EventArgs e)
    {
        if (Session["user"]==null)
        {
            Response.Redirect("~/Login.aspx");
        }
        base.OnInit(e);
    }
一个OnError全局捕获程序(当然page得继承否则不能实现)

 protected override void OnError(EventArgs e)
    {
        string errorMsg = String.Empty;
        Exception currentError = Server.GetLastError();
        errorMsg += "来自页面的异常处理<br />";
        errorMsg += "系统发生错误:<br />";
        errorMsg += "错误地址:" + Request.Url + "<br />";
        errorMsg += "错误信息:" + currentError.Message + "<br />";
        Session["error"] = errorMsg;
        Server.ClearError();
        Response.Redirect("~/resources/500.aspx");
        base.OnError(e);
    }
当然了你看到我的代码一想就知道 如果有错误了 会调转到resources/500.aspx这个页面上 那么在500.aspx上写很少的代码 就可以把错误显示错来了.

  er.Text = Session["error"]==null?"未知错误":Session["error"].ToString();
  Session["error"] = null;
  • 打赏
  • 举报
回复
首先不要拿出这么多水货来评价,一定先要亲自写一个测试程序。例如只需要写一行
private void Pagr_Load(object sender, EventArgs e)
{
    throw new NotImplementedException();
}
这时候,你再看是否在页面上显示调试跟踪信息。 网站如果有很严重的bug,是会捕获不了异常的。并不是说有的信息都会显示在页面上。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧