Redirect.Response()正在删除查询字符串

时间:2017-08-22 19:03:23

标签: c# asp.net redirect web sitecore

我有一个问题,弄清楚为什么要打电话

Response.Redirect(urlWithQueryParams, false)

其中urlWithQueryParams是“localhost / forms / confirmation?form =%7BE92EB767-8BB6-44F1-A4C9-9CDB2C2DBCCC%7D& id = 8454DDBC072C49A48AD116019A9D5824& value = gESO%2BDDBGEAA7eZMz2JqHQ%3D%3D”正在删除所有查询参数重定向发生时的URL我目前将重定向设置为

Response.Redirect(urlWithQueryParams);

但是,每当用户提交表单并触发重定向时,这样调用会导致抛出ThreadAbortAbortException。我发现了一些SO帖子说要在那里添加虚假标志,然后按照

进行操作
HttpContext.Current.ApplicationInstance.CompleteRequest();

但每当我添加false标志时,页面都会重定向到正确的页面,但会沿途删除查询参数。用户被重定向到的确认页面需要这些参数才能正确显示,我找不到任何指出导致此问题的原因。还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

这就是我这样做的方式。

try
{
    // this is throw the ThreadAbortException exception
    Response.Redirect(stringUrl, true);
}
catch (ThreadAbortException)
{
    // ignore it because we know that comes from the redirect
}
catch (Exception x)
{
    // log the error
}

我在这里解释为什么Redirect to a page with endResponse to true VS CompleteRequest and security thread

简而言之,异常是正常的,因为您停止了页面的处理,我们希望这样做有两个原因。 1)为了安全起见,2)只是停止不需要的其余cpu处理。

同样奇怪的是你丢失了查询字符串,因为endResponse只是“结束”调用AbortCurrentThread();的处理 - 可能是线程其余部分的一些代码添加了一些内容...