C# HttpWebRequest - 如何确定是不是发生了 HTTP 301?
Posted
技术标签:
【中文标题】C# HttpWebRequest - 如何确定是不是发生了 HTTP 301?【英文标题】:C# HttpWebRequest - How to determine if HTTP 301 Occured?C# HttpWebRequest - 如何确定是否发生了 HTTP 301? 【发布时间】:2011-10-18 17:30:04 【问题描述】:我正在为 ASP.NET MVC Web 应用程序测试我的 HTTP 301 重定向(永久移动)。
我使用以下代码创建了一个测试页面:
try
var req = (HttpWebRequest) WebRequest.Create(url);
resp = (HttpWebResponse) req.GetResponse();
return Json(new statusCode = (int) resp.StatusCode);
catch (Exception exc)
return Json(new statusCode = (int)HttpStatusCode.InternalServerError );
finally
if (resp != null) resp.Close();
但问题是,状态码是 HTTP 200(OK),因为它正在读取最后一个响应(例如它被重定向到的页面)。
URL 将访问我的重定向控制器,它会返回:
return RedirectToRoutePermanent("SomeRoute", new id = someId );
这就是我想要捕获的,而不是它被重定向到的页面的 200。
我该怎么做?
【问题讨论】:
【参考方案1】:你需要关闭automatic redirection following:
req.AllowAutoRedirect = false;
【讨论】:
【参考方案2】:如果您希望请求自动跟随 HTTP 重定向标头到资源的新位置,请将 AllowAutoRedirect
设置为 true。
如果 AllowAutoRedirect
设置为 false,则所有 HTTP 状态代码从 300 到 399 的响应都将返回给应用程序。
您还可以通过MaximumAutomaticRedirections
属性设置最大重定向次数。
使用它来停止自动重定向
myHttpWebRequest.AllowAutoRedirect=false;
【讨论】:
以上是关于C# HttpWebRequest - 如何确定是不是发生了 HTTP 301?的主要内容,如果未能解决你的问题,请参考以下文章
C# HttpWebRequest - 如何在不下载的情况下区分 HTML 和 XML 页面?
如何使用 c# 使用 httpwebrequest 从 json api 获取数据?
C# HttpWebRequest 如何实现SOCKET5代理