如题:一个网站有多个项目 ,每个项目的页面出错都要 转到指定 项目中去记录错误信息到数据库中。
请教怎么获取错误信息 。
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="500" redirect="../errorsNet/err500net.aspx" />
         </customErrors>
已经可以转到相应页面了。主要是在该页 获取错误信息的代码。Exception objasperror = new Exception();
            objasperror = Server.GetLastError();
获取不到请教高手指点

解决方案 »

  1.   

    http://www.diybl.com/course/4_webprogram/asp.net/netjs/200836/102954.html
    http://www.mscto.com/AspNet/25727205.html
      

  2.   

    可以从出错页面把错误信息传递到err500net.aspx页面。
      

  3.   

    可以试试在global.asax文件里面做处理void Application_Error(object sender, EventArgs e) 
        {
            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);
        }
      

  4.   

    5.重定向到自定义错误页面
    网站通常包含诸多页面,因此很难保证每个页面在运行时都不会发生错误。当页面发生错误时会产生详细的错误信息,这些信息对于普通访问者来说晦涩难懂,因此需要在客户端以一个友好的页面向用户提示错误信息。此时,可以通过配置“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>
      

  5.   

    把错误信息放在Session之类的全局变量里面,之后在错误记录模块里面调用并且写进文件就行了
      

  6.   

    web.config 里配置customErrors标签, 是最好的方法, 
    其他方法都需要改动代码
      

  7.   

    <customErrors defaultRedirect="Error.htm" mode="On">
    <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版本不受支持。 
      

  8.   

        void Application_Error(Object sender, EventArgs e)
        {
            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();
            }
        }
      

  9.   

    你们说的是同一个项目,我的那个是多个项目第二个项目 无法获取 出错项目的 Exption 和 request
      

  10.   

    在global.asax中进行处理就可以
      

  11.   

    不同啊  
    一个网站里包含了 好多个解决方案 还有asp页面 但是不考虑asp 只是。net
      

  12.   

    那你就每一个解决方案写一个,只要在WEB工程的GLOBAL德APPLICATION_ERROR中截取错误信息,然后记录错误信息并写入就可以啊