如题:一个网站有多个项目 ,每个项目的页面出错都要 转到指定 项目中去记录错误信息到数据库中。
请教怎么获取错误信息 。
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="500" redirect="../errorsNet/err500net.aspx" />
</customErrors>
已经可以转到相应页面了。主要是在该页 获取错误信息的代码。Exception objasperror = new Exception();
objasperror = Server.GetLastError();
获取不到请教高手指点
请教怎么获取错误信息 。
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="500" redirect="../errorsNet/err500net.aspx" />
</customErrors>
已经可以转到相应页面了。主要是在该页 获取错误信息的代码。Exception objasperror = new Exception();
objasperror = Server.GetLastError();
获取不到请教高手指点
解决方案 »
- 这个CheckBoxList绑定DataValueField怎么绑定不上呢?
- sql :如何求每组最大的前2 项 ?
- Gridview 里做"new"图标怎样实现???
- vs2005 GridView多级显示问题
- 任务栏显示问题,请各位高手帮忙
- 密码区分大小写的问题,请高手解答
- 新手求助,本人需要做一个asp,asp.net 通用的通行证,大家有什么好方法!
- 用了孟子老大的"利用Repeater控件显示主-从关系数据表"的方法,但如何才能让它只显示从表的前十条记录啊
- textbox内容选中问题
- repeater控件的分页代码可以写在footer里面吗?
- 想做一个IE语音插件
- 用Session["UserName"] 如何用vs写下面这个欢迎界面
http://www.mscto.com/AspNet/25727205.html
{
string strMessage = Server.GetLastError().Message+System.DateTime.Now.ToString();
THS.Tools.FileHelper.SaveFileText("Error_log.txt", strMessage, true, "GB2312");
////Response.Write(strMessage);
//Server.ClearError();
////以下把信息写入windows日志
////要把aspnet用户添加到管理员组中,以便有写注册表权限
//if (!System.Diagnostics.EventLog.SourceExists("mySource"))
// System.Diagnostics.EventLog.CreateEventSource("mySource", "myLog");
//System.Diagnostics.EventLog Event = new System.Diagnostics.EventLog();
//Event.Source = "mySource";
//Event.WriteEntry(strMessage, System.Diagnostics.EventLogEntryType.Warning);
}
网站通常包含诸多页面,因此很难保证每个页面在运行时都不会发生错误。当页面发生错误时会产生详细的错误信息,这些信息对于普通访问者来说晦涩难懂,因此需要在客户端以一个友好的页面向用户提示错误信息。此时,可以通过配置“Web.config”文件,在页面发生错误时将程序重定向到自定义的错误页面。在“Web.config”文件中,配置连接错误页面是在<customErrors></customErrors>节点中完成的,其中可以配置的属性如表5-11所示。表5-11 重定向到错误页面使用的属性属 性
说 明
mode
指定是否启用或禁用自定义错误,包括:On(启用自定义错误)、Off(禁用自定义错误)、RemoteOnly(服务器端显示ASP.NET给出的详细错误信息,而客户端显示自定义的错误页面)
defaultRedirect
指定页面发生错误时,重定向到的默认页面地址
例如,下面的代码演示了页面发生错误时,将程序重定向到error.aspx:<customErrors mode="On" defaultRedirect ="error.aspx"></customErrors>在<customErrors>节点下还可以设置子节点<error>,通过该子节点可以将HTTP的状态代码与自定义错误页关联起来。此时,在子节点<error>中可以设置的属性如表5-12所示。表5-12 子节点<error>中使用的属性属 性
说 明
statusCode
指定发生的错误HTTP状态代码
redirect
指定发生错误时重定向到的页面地址
例如,下面的代码显示了在发生401错误(未授权)和404错误(未找到)时,分别将重定向到自定义的错误页面Unauthorized.aspx和FileNotFound.aspx:<customErrors mode="RemoteOnly" defaultRedirect="error.aspx"> <error statusCode="401" redirect="Unauthorized.aspx" /> <error statusCode="404" redirect="FileNotFound.aspx " /></customErrors>
其他方法都需要改动代码
<error statusCode="404" redirect="NotExist.htm"/>
</customErrors>
这样就行了
是什么错误就改上面的错误代号就行了4xx-客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。
401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
401.1-登录失败。
401.2-服务器配置导致登录失败。
401.3-由于ACL对资源的限制而未获得授权。
401.4-筛选器授权失败。
401.5-ISAPI/CGI应用程序授权失败。
401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。
403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
403.1-执行访问被禁止。
403.2-读访问被禁止。
403.3-写访问被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒绝。
403.7-要求客户端证书。
403.8-站点访问被拒绝。
403.9-用户数过多。
403.10-配置无效。
403.11-密码更改。
403.12-拒绝访问映射表。
403.13-客户端证书被吊销。
403.14-拒绝目录列表。
403.15-超出客户端访问许可。
403.16-客户端证书不受信任或无效。
403.17-客户端证书已过期或尚未生效。
403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。
403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。
403.20-Passport登录失败。这个错误代码为IIS6.0所专用。
404-未找到。
404.0-(无)–没有找到文件或目录。
404.1-无法在所请求的端口上访问Web站点。
404.2-Web服务扩展锁定策略阻止本请求。
404.3-MIME映射策略阻止本请求。
405-用来访问本页面的HTTP谓词不被允许(方法不被允许)
406-客户端浏览器不接受所请求页面的MIME类型。
407-要求进行代理身份验证。
412-前提条件失败。
413–请求实体太大。
414-请求URI太长。
415–不支持的媒体类型。
416–所请求的范围无法满足。
417–执行失败。
423–锁定的错误。
5xx-服务器错误
服务器由于遇到错误而不能完成该请求。
500-内部服务器错误。
500.12-应用程序正忙于在Web服务器上重新启动。
500.13-Web服务器太忙。
500.15-不允许直接请求Global.asa。
500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。
500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。
500.100-内部ASP错误。
501-页眉值指定了未实现的配置。
502-Web服务器用作网关或代理服务器时收到了无效响应。
502.1-CGI应用程序超时。
502.2-CGI应用程序出错。application.
503-服务不可用。这个错误代码为IIS6.0所专用。
504-网关超时。
505-HTTP版本不受支持。
{
Exception exception1 = this.Server.GetLastError().GetBaseException();
if (Microsoft.VisualBasic.Strings.InStr(exception1.Message, "System.OutOfMemoryException", Microsoft.VisualBasic.CompareMethod.Binary) > 0)
{
GC.Collect();
GC.WaitForPendingFinalizers();
this.Response.Redirect(this.Request.RawUrl);
}
else
{
if (Session["UserName"] == null)
{
Session["UserName"] = "Session过期";
}
string text1 = "[错误信息]: " + exception1.Message + exception1.StackTrace;
text1 = Microsoft.VisualBasic.CompilerServices.StringType.FromObject(Microsoft.VisualBasic.CompilerServices.ObjectType.StrCatObj(text1, Microsoft.VisualBasic.CompilerServices.ObjectType.StrCatObj(("[错误信息]: " + this.Request.RawUrl) + "[执行人编号]:", HttpContext.Current.User.Identity.Name.ToString() + "[执行人姓名]:" + this.Session["UserName"] + "[IP地址]:" + HttpContext.Current.Request.UserHostAddress.ToString())));
this.LogError(text1);
}
if (Microsoft.VisualBasic.Strings.InStr(this.Request.RawUrl, "login.aspx", Microsoft.VisualBasic.CompareMethod.Binary) == 0)
{
this.Response.Redirect(this.Request.ApplicationPath + "/Error/defaultError.htm");
}
}
void LogError(string message)
{
string text1 = HttpContext.Current.Server.MapPath(Request.ApplicationPath + "/ErrorLog.htm");
try
{
System.IO.StreamWriter writer1 = new System.IO.StreamWriter(text1, true);
writer1.WriteLine("<br><br>");
writer1.WriteLine("## " + Microsoft.VisualBasic.CompilerServices.StringType.FromDate(Microsoft.VisualBasic.DateAndTime.Now) + " " + message + " ");
writer1.Close();
}
catch (Exception exception1)
{
Microsoft.VisualBasic.CompilerServices.ProjectData.SetProjectError(exception1);
Microsoft.VisualBasic.CompilerServices.ProjectData.ClearProjectError();
}
}
一个网站里包含了 好多个解决方案 还有asp页面 但是不考虑asp 只是。net