通过 url 传递长查询字符串显示找不到页面错误 (404)

Passing long querystrings over urls shows page not found error(404)

我有一个 "error.aspx" 页面,如果发现任何异常,它会给我发邮件。当我手动打开页面时,mysite.com/error.aspx,页面打开正常,但是当它被带有 exception.message 和 exception.stackTrace 作为查询字符串的 catch 块重定向时,我收到错误"page not found"。查询字符串是否指示浏览器打开不同的 url?不过,在本地主机上运行时它工作正常。

     public void send_error(Exception ex)
    {
   Response.Redirect("error.aspx?time=" + DateTime.Now.ToString() + "&ex=" + ex.Message + "&st=" + ex.StackTrace.Replace("\n", " "), false);

    }

如果您检查此 Article,您将看到 url 字符串的最大查询长度对于 Internet Explorer 是 2048 个符号。可能 url 更大,因此您遇到了这个问题。一种解决方案是将会话中的期望消息保存为字符串,然后在其他页面上检索它。

string errorMessage = DateTime.Now.ToString() + " " + ex.Message + " " + ex.StackTrace.Replace("\n", " ");
Session["__ErrMessage"] = errorMessage;

当你在其他页面时,你可以像这样访问这个字符串:

string errMessage = "";

if(Session["__ErrMessage"] != null)
    errMessage = Session["ErrMessage"].ToString();