我有一个问题,弄清楚为什么要打电话
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标志时,页面都会重定向到正确的页面,但会沿途删除查询参数。用户被重定向到的确认页面需要这些参数才能正确显示,我找不到任何指出导致此问题的原因。还有其他人遇到过这个问题吗?
答案 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();
的处理 - 可能是线程其余部分的一些代码添加了一些内容...