簡體   English   中英

C#HttpWebRequest - 如何確定HTTP 301是否存在?

[英]C# HttpWebRequest - How to determine if HTTP 301 Occured?

我正在為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頁面。

我該怎么做?

您需要關閉以下自動重定向

req.AllowAutoRedirect = false;

如果希望請求自動將HTTP重定向標頭跟隨到資源的新位置,請將AllowAutoRedirect設置為true。

如果AllowAutoRedirect設置為false,則將HTTP狀態代碼為300到399的所有響應返回給應用程序。

您還可以設置MaximumAutomaticRedirections屬性要遵循的最大重定向數。

使用它來停止自動重定向myHttpWebRequest.AllowAutoRedirect=false;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM