我有一个小的重定向代码,它将当前请求重定向到一个jsp页面,并且必须等到jsp页面执行后再恢复执行主线程,该主线程将为用户加载一个祝贺页面。
我的代码如下:
private void PostToCallBackPage(String url, String postdata)
{
try
{
log.Debug(url + "?" + postdata);
Response.Redirect(url + "?" + postdata);
}
catch (Exception ex)
{
log.Error("PostToCallBackPage error: " + ex.Message);
}
log.Debug("end of PostToCallBackPage");
Response.Redirect(ConfigurationSettings.AppSettings["CongratulationPage"] + QueryString);
}
但是,我没有看到重定向到正在发生的祝贺。我在日志中看到clientabortexception。在查看我的代码做错了什么时,我可以获得帮助吗?
答案 0 :(得分:1)
将当前请求重定向到jsp页面,并且必须等到jsp页面执行
不,那不会发生。从服务器的角度来看,重定向是请求的 end -它涉及发送301/302/307 /当前请求的任何响应以及新的url-就是 。服务器无法等待-这个概念实际上不存在。 Http(至少1 ..)是请求-响应协议;客户端发出了一个请求-服务器发送了一个响应。一旦服务器端代码发出了要重定向的信号,则从服务器的角度来看:就这样-没有更多要做。