是这样在我的网站中有个cs类
当它出现异常的时候我想把这个异常信息传送到error.aspx中去
现在问题出来了
在类cs中不能使用respon.那么怎么发送这个string error到error.aspx?error = error中去呢?

解决方案 »

  1.   

                try
                {
                    con.Open();
                    com.ExecuteNonQuery();
                }
                catch (Exception ee)
                {
                    return 0;                
                }
                finally
                {
                    con.Close();                
                }
                return 1;cs类中的代码
    这里有个ee
    你如何把这个ee传到error.aspx中去呢?
      

  2.   

    error.aspx是专门处理错误的页面
      

  3.   

    在.aspx中调用这个 cs文件
    try
    {在此调用这个可能会发生错误的 cs 文件}catch()
    {
      如果发生错误,那么在这里捕捉然后 response.Redirect("error.aspx")
    }
      

  4.   

    这种处理方法是不合理的。
    思路:
    1.遇到异常的时候抛出(throw)即可,要带上错误信息
    try
    {
    //...........
    }
    catch(Exception ex)
    {
    throw new Exception(ex.Message);
    }
    2.在Global.asax.cs的Application_Error中捕获异常(只给你个思路,具体意思自己看吧)
    protected void Application_Start(Object sender, EventArgs e)
    {
    Application["msg"]=1;
    Application["tag"]=1;
    }
    protected void Application_Error(Object sender, EventArgs e)
    {
    try
    {
    if(Convert.ToInt32(Application["tag"])>2)
    {
    Application["tag"]=1;
    return;
    }
    Application["tag"]=Convert.ToInt32(Application["tag"])+1;
    Exception objErr = Server.GetLastError().GetBaseException();
    Application["errorPage"] = Request.Url.ToString();
    Application["errorMsg"] =objErr.Message;
    Server.ClearError();
    Response.Redirect("Error.aspx");
    }
    catch{}
    }
    3.异常处理页面Error.aspx.cs:
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!IsPostBack)
    {
    try
    {
    Application["tag"]=1;
    lblError.Text=this.lblErrorPage.Text+Application["errorPage"].ToString()+"<br>"+this.lblErrorMsg.Text+Application["errorMsg"].ToString();
    MessageBox.ShowPopupWin(this,"","",30000);
    Web.Class.WriterLog log = new Artdio.Web.Class.WriterLog( Server.MapPath(@"./Log/Error.log"));//写日志
    log.WriterError(Application["errorPage"].ToString(),Application["errorMsg"].ToString());
    }
    catch{}
    }
    }
    Error.aspx:<%@ Page language="c#" Codebehind="Error.aspx.cs" AutoEventWireup="false" Inherits="Artdio.Web.Error" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>Error</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <LINK href="./Css/outlook/default.css" type="text/css" rel="stylesheet">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:Label id="lblErrorMsg" style="Z-INDEX: 102; LEFT: 424px; POSITION: absolute; TOP: 392px"
    runat="server" Visible="False">异常信息: </asp:Label>
    <br>
    <br>
    <br>
    <div style="WIDTH:100%" align="center">
    <div align="center" style="BORDER-RIGHT:#ff6600 1px dotted; PADDING-RIGHT:20px; BORDER-TOP:#ff6600 1px dotted; PADDING-LEFT:20px; PADDING-BOTTOM:25px; MARGIN:auto; BORDER-LEFT:#ff6600 1px dotted; WIDTH:660px; PADDING-TOP:25px; BORDER-BOTTOM:#ff6600 1px dotted; BACKGROUND-COLOR:#fffcec">&nbsp;&nbsp;
    <img src="./images/error.gif" border="0" alt="提示:" align="absMiddle">
    <asp:Label id="lblError" runat="server"></asp:Label>
    <br>
    </div>
    </div>
    <asp:Label id="lblErrorPage" style="Z-INDEX: 101; LEFT: 312px; POSITION: absolute; TOP: 392px"
    runat="server" Visible="False">发生异常页:</asp:Label>
    </form>
    </body>
    </HTML>
      

  5.   

    如果不用上面的方法,直接在 cs 类文件中也是可以跳转到 .aspx 文件中的,如下
    //先在 .cs 类文件中导入System.Web 什么的 然后如下:
            public void theComExecuteNonQuery(string Sql, Page thePage)
            {
                try
                {
                    SqlCommand command = new SqlCommand(theSql, sqlconn);
                    command.ExecuteNonQuery();
                    sqlconn.Close();
                    command.Dispose();
                }
                catch (Exception ex)
                {
                    sqlconn.Close();
                    thePage.Redirect("error.aspx");            }
            }
      

  6.   

    如果不用上面的方法,直接在 cs 类文件中也是可以跳转到 .aspx 文件中的,如下 
    //先在 .cs 类文件中导入System.Web 什么的 然后如下: 
            public void theComExecuteNonQuery(string Sql, Page thePage) 
            { 
                try 
                { 
                    SqlCommand command = new SqlCommand(theSql, sqlconn); 
                    command.ExecuteNonQuery(); 
                    sqlconn.Close(); 
                    command.Dispose(); 
                } 
                catch (Exception ex) 
                { 
                    sqlconn.Close(); 
                    //应该是
                    thePage.Response.Redirect("error.aspx");            } 
            } 
      

  7.   

    using System.WebHttpContext.Current.Response.xxx()
      

  8.   

    我在cs文件没有找到thePage这个
    好象用不了,,
    是要包含哪个类吗
      

  9.   

    类里面throw(ee);出来,到web目录下面的的Global.asax.cs的Application_Error函数中进行处理
      

  10.   

    不建议这么做,这样在每个地方都要写这个跳转,一旦修改要修改整个项目。
    采用在Global.asax.cs中处理的好处是维护方便,代码简洁,错误统一捕获处理。