如何与aspxerrorpath一起显示请求的查询字符串

时间:2013-03-17 22:30:06

标签: asp.net

我在asp.net中有一个web应用程序,在web.config中有一个写的

<customErrors mode="On" defaultRedirect="error.aspx" />

假设我有一个页面abcd.aspx。我已在浏览器中发送abcd.aspx?p1=cvb&p2=dfg

请求

现在,如果发生任何错误,它会重定向到error.aspx?aspxerrorpath=abcd.aspx. 但我想通过p1p2以及。{即error.aspx?aspxerrorpath=abcd.aspx&p1=cvb&p2=dfg

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我建议查看ELMAH以获取asp.net错误记录。

答案 1 :(得分:0)

你不能,这是内部函数调用的一部分,你不能改变它。以下是制作重定向的函数,它的this.Request.Path不是带参数的完整网址。

internal bool RedirectToErrorPage(string url, CustomErrorsRedirectMode redirectMode)
{
    try
    {
        if (string.IsNullOrEmpty(url))
        {
            return false;
        }
        if (this._headersWritten)
        {
            return false;
        }
        if (this.Request.QueryString["aspxerrorpath"] != null)
        {
            return false;
        }
        if (redirectMode == CustomErrorsRedirectMode.ResponseRewrite)
        {
            this.Context.Server.Execute(url);
        }
        else
        {
            if (url.IndexOf('?') < 0)
            {
                url = url + "?aspxerrorpath=" + HttpEncoderUtility.UrlEncodeSpaces(this.Request.Path);
            }
            this.Redirect(url, false);
        }
    }
    catch
    {
        return false;
    }
    return true;
}

再说几句。
当你到达那个错误页面时,你已经失去了控制权,这意味着你有一个编程错误,或者一些unhanding异常。在EventViewer上记录了该错误,但您也可以使用global.asax上的Application_Error对其进行个人登录并将其写入日志文件。

相对:
How to catch unhandled exceptions in an asp.net application?
How do I make a "generic error" page in my ASP.NET application so that it handles errors triggered when serving that page itself?