同时使用Response.Write和Response.Redirect

时间:2013-04-09 06:39:27

标签: c# asp.net .net asp.net-mvc

以下是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.

注意:这不适用于解决任何实时情况。只是好奇才知道原因或潜在行为。

3 个答案:

答案 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>