1

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

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

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

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

我怎样才能做到这一点?

4

2 回答 2

0

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

于 2013-03-17T22:32:31.023 回答
0

你不能,这是内部函数调用的一部分,你不能改变它。这是使重定向及其this.Request.Path参数不包含完整 url 的函数。

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;
}

再说几句。
当您到达该错误页面时,您将失去控制,这意味着您遇到了编程错误或一些未处理的异常。该错误记录在您的 EventViewer 上,但您也可以使用Application_Errorglobal.asax 上的个人记录它并将其写入您的日志文件。

相对:
如何在 asp.net 应用程序中捕获未处理的异常?
如何在我的 ASP.NET 应用程序中创建一个“一般错误”页面,以便它处理在提供该页面本身时触发的错误?

于 2013-03-17T23:51:09.393 回答