Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Response()正在删除查询字符串_C#_Asp.net_Redirect_Web_Sitecore - Fatal编程技术网

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把它缩短了,切中要害!希望这能有所帮助。