ASP HttpWebRequest 和重定向

Posted

技术标签:

【中文标题】ASP HttpWebRequest 和重定向【英文标题】:ASP HttpWebRequest and Redirect 【发布时间】:2011-01-14 10:17:29 【问题描述】:

好的,我有一个客户端向服务器发送一些数据。服务器接收帖子,并通过重定向进行回答。问题是客户端不重定向。此外,我尝试检查客户端获得的响应的 StatusCode,它总是相同的“OK”。而不是重定向代码。我错过了什么?

在客户端我有这样的东西:

  StringBuilder sb;
        try
        
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/serv/Default.aspx");
            request.Method = "POST";                

        byte[] data = Encoding.ASCII.GetBytes(GetDATA());

        request.ContentType = "text/xml";
        request.ContentLength = data.Length;
        Stream stream = request.GetRequestStream();
        stream.Write(data, 0, data.Length);

        request.AllowAutoRedirect = true;
        request.MaximumAutomaticRedirections = 10;

        HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            response.Close();  catch(Exception ex) 

在服务器端我只有这一行:

HttpContext.Current.Response.Redirect("http://www.google.com", true);

在这种情况下,客户端收到一个答案并且什么都不做。

谢谢。

【问题讨论】:

【参考方案1】:

当您将“AllowAutoRedirect”设置为 true 时,这意味着您的 HttpWebRequest 对象将在看到重定向后进行第二次网络请求。当您从响应对象中看到“200 OK”时,这是因为您看到的是“www.google.com”的响应。您可以检查 Response.ResponseURI 来验证这一点。

您需要关闭“AllowAutoRedirect”,然后像 Oded 所说的那样检查响应代码。

【讨论】:

以上是关于ASP HttpWebRequest 和重定向的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net 核心临时数据和重定向操作不起作用

调用 javascript 警报和重定向 url 问题

如何从 ASP.Net 发布然后重定向到外部 URL?

C# HttpWebRequest - 如何确定是不是发生了 HTTP 301?

Servlet笔记9--转发与重定向

重定向到登录页面 asp.net