Response.Redirect:无法在发送 HTTP 标头之后进行重定向
2012-07-31 22:09
489 查看
错误提示:““/”应用程序中的服务器错误。无法在发送 HTTP 标头之后进行重定向。“
错误出现语句:“Response.Redirect("diaryRun.aspx");“;
错误处理方式:
1:“Server.Transfer("diaryRun.aspx");“
结果:页面能够顺利跳转但是URL地址不变。
2:public static void open(System.Web.UI.Page page, string url)
{
StringBuilder Builder = new StringBuilder();
Builder.Append("<script language=’javascript’ >");
Builder.AppendFormat("alert(‘{0}’);", "操作成功!");
Builder.AppendFormat("top.location.href=’{0}’ ", url);
Builder.Append("</script>");
page.ClientScript.RegisterStartupScript(page.GetType(), "message", Builder.ToString());
}
结果:能够顺利跳转页面,URL地址正确
备注:
Response.Redirect():将客户端重定向到新的 URL。
重载方法为两种:
1:HttpResponse.Redirect (String)
说明:将客户端重定向到新的 URL 并指定该新 URL。
2:HttpResponse.Redirect (String, Boolean)
说明:将客户端重定向到新的 URL。指定新的 URL 并指定当前页的执行是否应终止。
Server.Transfer():终止当前页的执行,并为当前请求开始执行新页。
重载方法为三种:
1:HttpServerUtility.Transfer (String)
说明:对于当前请求,终止当前页的执行,并使用指向一个新页的指定 URL 路径来开始执行此新页。
2:HttpServerUtility.Transfer (IHttpHandler, Boolean)
说明:终止当前页的执行,然后使用一个实现 IHttpHandler 接口的自定义 HTTP 处理程序开始新请求的执行,并指定是否要清除 QueryString 和 Form 集合。
3:HttpServerUtility.Transfer (String, Boolean)
说明:终止执行当前页,并开始使用新页的指定 URL 路径来执行新页。指定是否清除 QueryString 和 Form 集合。
两种重定向方法的区别:
在使用Response.Redirect()的时候Response.Redirect()是给客户机分配一个新的URL,由于Response.Redirect()方法实际上是通过META标记来执行资源的更改,所以如果标题发送给客户机就会产生上述的错误。执行的顺序为Server 发送请求 > Client 收到信息确认返回 > Server 请求重定向 > test.aspx。
在使用Server.Transfer()的时候它的一切动作都在Server端进行,所以相对而言,它的重定向速度比前都要快得多。它有两个参数,一个为重定向页面,一个为布尔值(用来指定是否保存原页面表单的信息)。它仅仅在重定向的时候带了一个状态信息,也就是用ViewState保存了重定向前的页面的信息。
不过Server.Transfer()方法只能重定向同一台服务器的页面而Response.Redirect()则可以定向到其他的服务器如Response.Redirect(“www.baidu.com”)。
所以在标题发送到客户机后使用Response.Redirect()方法就会产生错误,引发HttpException异常。
摘自 http://axiu.me/learning_notes/responseredirect_error/
相关文章推荐
- Response.Redirect引起的“无法在发送HTTP标头之后进行重定向”
- Response.Redirect引起的“无法在发送HTTP标头之后进行重定向”
- 解决:无法在发送 HTTP 标头之后进行重定向。 跟踪信息: 在 System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>……
- Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向”
- Response.Redirect:无法在发送 HTTP 标头之后进行重定向
- Response.Redirect:无法在发送 HTTP 标头之后进行重定向
- 无法在发送 HTTP 标头之后进行重定向--Can not send headers after HTTP redirects
- 处理 ASP.NET 中的异常:无法在发送 HTTP 标头之后进行重定向。
- C# 无法在发送 HTTP 标头之后进行重定向
- 无法在发送 HTTP 标头之后进行重定向
- .Net MVC Redirect出现:服务器无法在已发送 HTTP 标头之后设置状态解决方案
- System.Web.HttpException: 无法在发送 HTTP 标头之后进行重定向的错误??
- 解决MVC3 服务器无法在已发送 HTTP 标头之后设置状态 问题
- 解决MVC3 服务器无法在已发送 HTTP 标头之后设置状态 问题
- 导出Excel,出现“服务器无法在发送HTTP标头之后设置内容类型”
- 解决服务器无法在已发送 HTTP 标头之后设置状态导致的一个问题
- 解决"服务器无法在发送 HTTP 标头之后修改 cookie"问题
- 解决MVC3 服务器无法在已发送 HTTP 标头之后设置状态 问题
- NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头
- Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决