none
请问querystring不能包含哪些字符? RRS feed

  • 问题

  • try
    {
        //...
    }
    catch (OverflowException e)
    {
        this.Response.Redirect("~/error.aspx?msg=" + e.Message);
    }
    catch (System.Data.SqlClient.SqlException e)
    {
        this.Response.Redirect("~/error.aspx?msg=" + e.Message);
    }
    catch (Exception e)
    {
        this.Response.Redirect("~/error.aspx?msg=" + e.Message);
    }
    每当e.Message中包含':'、换行等字符时,程序会抱错;
    假如使用e.Message.Replace(':', '')等方法替换掉这些字符的话,那么一共有多少个querystring不能包含的字符呢
    2009年5月23日 8:16

答案

全部回复

  • 你可以在 Session 中保存这个信息 如 Session["CurrentException"],然后在 Error Page 中获取 Session 的 Exception 信息,主要是 Exception 的 Message 容易包含一些特殊字符用 URL 传的话可能出现一些问题,比如你上面的问题,长度不够的问题等

    知识改变命运,奋斗成就人生!
    2009年5月23日 8:24
    版主
  • 你执行一下Server.UrlEncode(e.Message)就可以了,你进行替换,显示的内容就不完整了

    this.Response.Redirect("~/error.aspx?msg=" + Server.UrlEncode(e.Message));

    【孟子E章】
    2009年5月23日 9:01
    版主
  • 用Session 也不错,用Server.UrlEncode改动更小
    谢谢
    2009年5月23日 11:46