Asp.Net网站统一处理错误信息

1.创建Global.asax文件

2.在Application_Error里统一处理,可以写入文件,也可以写入SQL。代码如下

            Exception ex = Server.GetLastError().GetBaseException();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"));

            //有被注入风险
            string ip = "";

            if (Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR") != null)
            {
                ip = Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR").ToString().Trim();
            }
            else
            {
                ip = Request.ServerVariables.Get("Remote_Addr").ToString().Trim();
            }

            sb.AppendLine("IP地址:" + ip);
            sb.AppendLine("浏览器:" + Request.Browser.Browser.ToString());
            sb.AppendLine("浏览器版本:" + Request.Browser.MajorVersion.ToString());
            sb.AppendLine("操作系统:" + Request.Browser.Platform.ToString());
            sb.AppendLine("错误信息:");
            sb.AppendLine("请求地址:" + Request.Url.ToString());
            sb.AppendLine("错误信息:" + ex.Message);
            sb.AppendLine("错误源:" + ex.Source);
            sb.AppendLine("异常方法:" + ex.TargetSite);
            sb.AppendLine("堆栈信息:" + ex.StackTrace);
            sb.AppendLine("====================================================================================================================");

            string logFilePath = Server.MapPath("~/log/");

            if (!Directory.Exists(logFilePath))
            {
                Directory.CreateDirectory(logFilePath);
            }

            File.AppendAllText(logFilePath + DateTime.Now.ToString("yyyy.MM.dd") + ".log", sb.ToString(), Encoding.UTF8);

            Server.ClearError();
            Response.Redirect("myError.htm");

对于注入问题可看

http://www.cnblogs.com/kingthy/archive/2007/11/24/970783.html

http://www.cnblogs.com/chengmo/archive/2013/05/29/php.html

时间: 2024-10-17 12:55:24

Asp.Net网站统一处理错误信息的相关文章

asp.net网站远程查看错误信息

在调试asp.net网站的时候,可能需要远程查看错误信息,可以通过修改web.config文件来做到,配置如下: <!-- Web.Config 配置文件 --> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration> 默认默配的情况下,是没有该配置的,有一段这样的配置注释,下面的配置是可以显示指定

在ASP.NET 5中显示错误信息

在 ASP.NET 5 中如果不进行显示错误信息的相关配置,在发生错误时,在浏览器中只能看到空白页面. 显示错误信息的配置方法如下: 1)在 project.json 中添加对 Microsoft.AspNet.Diagnostics 的引用 { "dependencies":{ "Microsoft.AspNet.Diagnostics": "1.0.0-*" } } 2)在 Startup.cs 中添加 app.UseErrorPage()

ASP.NET 网站迁移 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用

前提:今天要做网站迁移,把A服务器上的网站迁移到B服务器上,A服务器当时的环境是.NET 4.0 ,而B服务器是.NET2.0,A服务器IIS为6.0,B服务器IIS版本为7.0 第一步,先在B服务器上安装.NET4.0框架. 第二步,备份A服务器的数据库并还原至B服务器. 第三步,在默认文档里添加 index.aspx默认页. 第四步,在应用程序池,将托管环境更改为集成,其实我试了下是经典模式也行. 第五步,更改web.config配置文件. 首先:在web.config中找到节点<syste

构建ASP.NET网站十大必备工具(- 推荐)

最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/).在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具总结一下,将会是一件十分有趣的事情.这些工具既支持ASP.NET Web Forms又支持ASP.NET MVC. 性能工具 读了两本关于网站的前端性能的书(这两本优秀的图书分别是:<High Performance Web Sites> 和 <Even Faster Web Sites&g

构建ASP.NET网站十大必备工具(2)

正常运行时间 当一个网站发布以后,你肯定希望你的网站不会遇到任何问题,一直处在正常运行状态之中.现在,我使用下面这些工具来监控“Superexpert.com”网站,确保它一直处在正常运行状态之中. 4,ELMAH ELMAH 是 Error Logging Modules and Handlers for ASP.NET 的缩写.ELMAH可以让你记录下你的网站发生的任何一个错误,在将来,你可以重新检查这些错误.你可以从ELMAH项目的官方网站免费下载ELMAH:http://code.goo

asp显示完整的错误信息

调试asp显示完整的错误信息: 客户端浏览器设置:取消"显示友好的HTTP错误信息" IIS7设置(GUI): 1. <网站>-ASP-调试属性-将错误发送到浏览器,修改为True 2. <网站>-错误页-操作-编辑功能设置,选择"详细错误信息" 默认情况下,这里选择的是第三项"本地请求的详细错误和远程请求的自定义错误页",所以出现的情况会是:在本地调试可以看到错误的详细信息,但是通过远程来访问的时候就看不到了. 另外,网

asp.net记录错误信息的一般处理方法

在本文中,我们将通过一个简单的处理来记录在我们的网站中的错误和异常.我们这样操作,每当遇到程序错误时,将使用者导航到一个单独的页面,同时错误将被记录到服务器上的一个文本文件,每当错误发生时,我们将以日志的形式每天记录. 首先,我先写一个静态方法用于将错误信息记录到文本文件,这里是将错误信息记录到服务器上的Error文件夹下,代码如下: using System.Globalization; /// <summary> /// 用于将错误信息输出到txt文件 /// </summary&g

.NET跨平台:在Mac上跟着错误信息一步一步手写ASP.NET 5程序

今天坐高铁时尝试了一种学习ASP.NET 5的笨方法,从空文件夹开始,根据运行dnx . kestrel命令的错误信息,一步一步写代码,直至将一个最简单的ASP.NET程序运行起来. 尝试的具体步骤如下. 新建一个空文件夹HelloCnblogs: mkdir HelloCnblogs && cd $_ 在这个空HelloCnblogs文件夹中运行 dnx . kestrel 命令(基于CoreCLR的dnx),运行结果是如下的出错信息: System.InvalidOperationEx

ASP.NET MVC遍历ModelState的错误信息

在ASP.NET MVC中,ModelState中包含了验证失败的错误信息,具体被存储在ModelState.Values[i].Errors[j].ErrorMessage属性中.当然,通过打断点,单步调试可以查看具体的验证失败错误信息,但有时候希望把ModelState中的验证失败信息遍历显示出来. ModelState类型是ModelStateDictionary,ModelStateDictionary是一个字典集合,键是模型的各个属性,值是模型各个属性对应的ModelState. Mo