以下是Asp.net mvc代码,
public void Index()
{
Response.Write("Hey");
Response.Redirect("https://www.google.com");
}
OR
public void Index()
{
Response.Redirect("https://www.google.com");
Response.Write("Hey");
}
这里,重定向正在工作,但不是Write()。为什么重定向被优先考虑?我的意思是为什么302以及为什么不在http响应中为200.
注意:这不适用于解决任何实时情况。只是好奇才知道原因或潜在行为。
答案 0 :(得分:2)
Respose.Write正在运行,但是当您执行Redirect时,服务器会发送带有标题的响应:
HTTP / 1.1 302对象移动
服务器:Microsoft-IIS / 5.0
位置:某处/ newlocation.aspx
浏览器然后启动另一个请求(假设它支持重定向)到某个地方/ newlocation.aspx在浏览器中加载其内容。
无论如何,如果响应流被缓冲(“嘿”),您将使用Response.Redirect覆盖此响应。
答案 1 :(得分:0)
这里没有给出Redirect的优先权,你在同一个函数中调用Response.Write和Response.Redirect然后在写页面后直接重定向到你的给定网址。
答案 2 :(得分:0)
如果您遇到需要执行此类操作的实际场景,可以在代码隐藏/控制器中执行Response.Write(取决于您是否使用WebForms或MVC)并添加重定向HTML页面正文中的标题:
控制器:
public void Index()
{
Response.Write("Hey");
}
HTML:
<%
//response would show here
%>
<head>
<meta http-equiv="refresh" content="10; url=https://www.google.com" />
</head>