customErrors mode="Off"后怎么让它显示详细异常,而不要只显示iis 500异常
customErrors mode="Off"后如何让它显示详细错误,而不要只显示iis 500错误
一个网站在自己服务器上测试没任何问题,移植到另一台服务器,某些功能出错且只显示500错误,没有任何更详细的错误提示。
空间商一直坚持说是程序上面限制了不显示错误,可web.config并没有做任何限制,在我们自己服务器,如果有错误的话,都能显示具体的错误。
想问下,IIS更改哪个设置可以让它显示具体的错误信息。
以下是我的web.config设置
这里面并没有隐藏错误的代码设置吧。
------解决方案--------------------
http://bbs.****.net/topics/70390578
------解决方案--------------------
首先不要拿出这么多水货来评价,一定先要亲自写一个测试程序。例如只需要写一行
这时候,你再看是否在页面上显示调试跟踪信息。
网站如果有很严重的bug,是会捕获不了异常的。并不是说有的信息都会显示在页面上。
------解决方案--------------------
这个好说 如果是我 我会写一个类:Page
我一般习惯于override2个方法..一个是OnInit用来判断用户是否登陆
一个OnError全局捕获程序(当然page得继承否则不能实现)
当然了你看到我的代码一想就知道 如果有错误了 会调转到resources/500.aspx这个页面上
那么在500.aspx上写很少的代码 就可以把错误显示错来了.
一个网站在自己服务器上测试没任何问题,移植到另一台服务器,某些功能出错且只显示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>
这里面并没有隐藏错误的代码设置吧。
------解决方案--------------------
http://bbs.****.net/topics/70390578
------解决方案--------------------
首先不要拿出这么多水货来评价,一定先要亲自写一个测试程序。例如只需要写一行
private void Pagr_Load(object sender, EventArgs e)
{
throw new NotImplementedException();
}
这时候,你再看是否在页面上显示调试跟踪信息。
网站如果有很严重的bug,是会捕获不了异常的。并不是说有的信息都会显示在页面上。
------解决方案--------------------
这个好说 如果是我 我会写一个类: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;