C# Response()正在删除查询字符串
我不明白为什么要打电话C# Response()正在删除查询字符串,c#,asp.net,redirect,web,sitecore,C#,Asp.net,Redirect,Web,Sitecore,我不明白为什么要打电话 Response.Redirect(urlWithQueryParams, false) 其中urlWithQueryParams是“localhost/forms/confirmation?form=%7BE92EB767-8BB6-44F1-A4C9-9CDB2C2DBCCC%7D&id=8454DDBC072C49A48AD116019D5824&value=gESO%2BDBGEAA7EZMZ2JQHQ%3D%3D”在发生重定向时删除属于url的所有查询参数。我
Response.Redirect(urlWithQueryParams, false)
其中urlWithQueryParams是“localhost/forms/confirmation?form=%7BE92EB767-8BB6-44F1-A4C9-9CDB2C2DBCCC%7D&id=8454DDBC072C49A48AD116019D5824&value=gESO%2BDBGEAA7EZMZ2JQHQ%3D%3D”在发生重定向时删除属于url的所有查询参数。我目前的重定向设置为
Response.Redirect(urlWithQueryParams);
但是,这样的调用会导致每当用户提交表单并触发重定向时抛出ThreadAbortAbortException。我发现有几个帖子说要在上面加上假标志,然后用
HttpContext.Current.ApplicationInstance.CompleteRequest();
但每当我添加false标志时,页面都会重定向到正确的页面,但同时会删除查询参数。用户重定向到的确认页面需要指向这些参数才能正确显示,我找不到任何指向此问题原因的内容。还有其他人遇到过这个问题吗?我就是这样做的
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
}
我在这里解释原因
简而言之,异常是正常的,因为您停止了对页面的处理,我们希望这样做有两个原因。1) 为了安全起见,2)只需停止不需要的其余cpu处理
同样奇怪的是,为什么会丢失查询字符串,因为endResponse只是“结束”调用
abortcurrenthread()的处理代码>-可能线程其余部分的一些代码正在添加一些东西…我就是这样做的
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
}
我在这里解释原因
简而言之,异常是正常的,因为您停止了对页面的处理,我们希望这样做有两个原因。1) 为了安全起见,2)只需停止不需要的其余cpu处理
同样奇怪的是,为什么会丢失查询字符串,因为endResponse只是“结束”调用abortcurrenthread()的处理代码>-可能线程其余部分的一些代码添加了一些东西…两个答案都投了反对票,至少说明了中止线程的原因和问题所在。在不停止线程时,还要检查安全问题。运行页面的线程必须停止-为什么会这样?只有例外情况下线程才会停止…如果你真的理解这里的答案,你会发现如果你不停止处理,你就有安全问题。。。两个答案都投了反对票,至少说明了中止线程的原因和问题所在。在不停止线程时,还要检查安全问题。运行页面的线程必须停止-为什么会这样?只有例外情况下线程才会停止…如果你真的理解这里的答案,你会发现如果你不停止处理,你就有安全问题。。。请创建一个。我们会更容易帮助你。@mscheker把它缩短了,切中要害!希望这有帮助。请创建一个。我们会更容易帮助你。@mscheker把它缩短了,切中要害!希望这能有所帮助。