Asp.net 编写自定义404错误页面时,如何在URL上保留参数?

Asp.net 编写自定义404错误页面时,如何在URL上保留参数?,asp.net,iis-6,Asp.net,Iis 6,我在IIS6中设置了一个自定义404错误页面。在代码后面,我想从不正确的URL获取参数,我该怎么办? < P>你可能想考虑“接受”你所问的所有问题的正确答案(请参阅关于这个站点如何管理自己的FAQ)。希望,我的答案之一是: 您可以在应用程序错误处理程序的Global.asax中获取该值: void Application_Error(object sender, EventArgs e) { string s = System.Web.HttpContext.Current.Requ

我在IIS6中设置了一个自定义404错误页面。在代码后面,我想从不正确的URL获取参数,我该怎么办?

< P>你可能想考虑“接受”你所问的所有问题的正确答案(请参阅关于这个站点如何管理自己的FAQ)。希望,我的答案之一是:

您可以在应用程序错误处理程序的Global.asax中获取该值:

void Application_Error(object sender, EventArgs e) 
{
     string s = System.Web.HttpContext.Current.Request.QueryString.ToString();
}
或者通过QueryString.Keys[]等单独处理每个QueryString值。

我想您可能会使用

Request.ServerVariables("HTTP_REFERER");
在您的自定义错误页面中,从重定向的位置获取。如果获得该页面,则还可以获得querystring参数


希望这对您的自定义404页面有所帮助,请检查Request.Url.Query。 查询字符串的格式应为: 404;旧的请求url在这里

去掉404;部分,并使用此数据创建新的Uri对象。。恭喜-您可以访问旧的url,并且可以轻松获取查询字符串params:)

例如:

var url = new Uri(HttpUtility.UrlDecode(Request.Url.Query));
if (url.Query.Length > 0)
{
    var parameters = url.Query.TrimStart('?').Split('&');
    foreach(var p in parameters)
    {
        var parts = p.Split(new[]{'='}, 2).Dump();
        var name = parts[0];
        var value = parts[1];
    }
}

当我在我的自定义404错误页面中调试时,我没有看到我想要在所有参数中获得的任何参数,所有参数都包含在请求对象中。