none
Application_Error中 跳转到新页面怎么写啊? RRS feed

  • 问题

  • 使用 Response.Redirect("msg.aspx")
    会产生异常
    提示
    “((System.Web.HttpApplication)(this)).Response”引发了“System.Web.HttpException”类型的异常

    响应在此上下文中不可用。
    富磊
    2009年11月11日 3:48

答案

  • Web.config 加入

    <customErrors mode="On" defaultRedirect="GenericErrorPage.htm" > </customErrors> 

    或使用

    void Application_Error(object sender, EventArgs e)
    {
        Exception objErr = Server.GetLastError().GetBaseException();
        string error = "发生异常页: " + Request.Url.ToString() + "<br>";
        error += "异常信息: " + objErr.Message + "<br>";
        Server.ClearError();
        Application["error"] = error;
        Response.Redirect("ErrorPage.aspx");
    }
    //ErrorPage.aspx 
    protected void Page_Load(object sender, EventArgs e)
    {
        ErrorMessageLabel.Text = Application["error"].ToString();
    }


    知识改变命运,奋斗成就人生!
    • 已标记为答案 富磊 2009年11月16日 4:55
    2009年11月11日 3:59
    版主

全部回复

  • Web.config 加入

    <customErrors mode="On" defaultRedirect="GenericErrorPage.htm" > </customErrors> 

    或使用

    void Application_Error(object sender, EventArgs e)
    {
        Exception objErr = Server.GetLastError().GetBaseException();
        string error = "发生异常页: " + Request.Url.ToString() + "<br>";
        error += "异常信息: " + objErr.Message + "<br>";
        Server.ClearError();
        Application["error"] = error;
        Response.Redirect("ErrorPage.aspx");
    }
    //ErrorPage.aspx 
    protected void Page_Load(object sender, EventArgs e)
    {
        ErrorMessageLabel.Text = Application["error"].ToString();
    }


    知识改变命运,奋斗成就人生!
    • 已标记为答案 富磊 2009年11月16日 4:55
    2009年11月11日 3:59
    版主


  • 我新建了个 Global.asax.cs文件,放在App_code中,在Global.asax.cs文件中的Application_start方法中写代码,可以运行到,但是在Application_error方法中写代码,无法运行到这块

    在Global.asax文件的Application_error方法中写代码可以运行,但是上下文中不存在 Request Resposne。



    Global.asax 文件
    <%@ Application Language="C#" CodeBehind="Global.asax.cs" Inherits="Global" %>
    
    <script runat="server">
    
        void Application_Start(object sender, EventArgs e) 
        {
            //在应用程序启动时运行的代码
    
        }
        
        void Application_End(object sender, EventArgs e) 
        {
            //在应用程序关闭时运行的代码
    
        }
            
        void Application_Error(object sender, EventArgs e) 
        { 
            //在出现未处理的错误时运行的代码
            
            Exception objErr = Server.GetLastError().GetBaseException();
            string error = "发生异常页: " + Request.Url.ToString() + "<br>";
            error += "异常信息: " + objErr.Message + "<br>";
            Server.ClearError();
            Application["error"] = error;
            Response.Redirect("msg.aspx");
    
        }
    
        void Session_Start(object sender, EventArgs e) 
        {
            //在新会话启动时运行的代码
    
        }
    
        void Session_End(object sender, EventArgs e) 
        {
            //在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式 
            //设置为 StateServer 或 SQLServer,则不会引发该事件。
    
        }
           
    </script>
    




    Global.asax.cs文件
    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Xml;
    
    /// <summary>
    /// Global 的摘要说明
    /// </summary>
    public partial class Global : System.Web.HttpApplication
    {
        public ListItem[] lt_mary;
        public ListItem[] lt_education;
        public ListItem[] lt_country;
        public ListItem[] lt_city;
        public Global()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码
            readxml();
        }
        void Application_End(object sender, EventArgs e)
        {
            // 在应用程序关闭时运行的代码
        }
        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码
            string msg = "&#x51FA;&#x9519;&#x4E86;&#xFF01;"; //出错了!
            string goname = "&#x67E5;&#x8BE2;&#x9875;"; // 查询页
            Response.Redirect("msg.aspx?msg=" + msg + "&goname=" + goname + "&go=default.aspx");
        }
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码
        }
        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer,则不会引发该事件。
        }
     
    富磊
    2009年11月11日 5:03
  • 你好,

    请不要把Global.asax文件放在app-code文件夹下面,直接放在根目录下就行了。

    总之你把上面你添加的文件删除然后重新添加一个直接在网站根目录下然后试试。


    Microsoft Online Community Support
    2009年11月12日 4:44