2011-08-03 29 views
7

Bir ASP.NET MVC web uygulaması için HTTP 301 yönlendirmelerimin (kalıcı olarak taşınmış) bazı testlerini yapıyorum.C# HttpWebRequest - HTTP 301 Algılandı mı?

Aşağıdaki kod ile bir test sayfası oluşturduk

: o got it (örneğin sayfa son tepkisini okuyor çünkü,

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(); 
} 

Ama sorun, durum kodu HTTP 200 (Tamam) 'dir yönlendirildi.

URL döndüren benim yönlendirme denetleyicisi, vuracak:

return RedirectToRoutePermanent("SomeRoute", new { id = someId }); 

Ve bu i yakalamak istediğim şey, değil yönlendiriliyordur sayfanın 200.

Nasıl yaparım?

cevap

1

Seti AllowAutoRedirect true istek otomatik kaynağın yeni konuma HTTP yönlendirmesinin başlıklarını takip etmek istiyorsanız.

AllowAutoRedirect öğesi false olarak ayarlanırsa, 300'den 399'a kadar bir HTTP durum kodu olan tüm yanıtlar uygulamaya döndürülür.

Ayrıca, MaximumAutomaticRedirections özelliği tarafından takip edilecek maksimum yönlendirme sayısını da ayarlayabilirsiniz.

kullanımı bu durdurmak için otomatik yönlendirme myHttpWebRequest.AllowAutoRedirect=false;