2011-08-03 10 views
7

मैं एक एएसपी.नेट एमवीसी वेब अनुप्रयोग के लिए अपने HTTP 301 रीडायरेक्ट (स्थायी रूप से स्थानांतरित) का कुछ परीक्षण कर रहा हूं।सी # HttpWebRequest - यह निर्धारित करने के लिए कि 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 (ठीक) है, क्योंकि यह पिछले प्रतिक्रिया (जैसे पेज पढ़ रही यह मिल गया पुनर्निर्देशित)।

यूआरएल मेरी रीडायरेक्ट नियंत्रक है, जो इस रिटर्न मारा जाएगा:

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

और यही मैं पर कब्जा करना चाहते हैं, नहीं पेज यह पर पुनः निर्देशित हो जाता है की 200।

मैं इसे कैसे कर सकता हूं?

उत्तर

12

आप automatic redirection following बंद करने के लिए की आवश्यकता होगी:

req.AllowAutoRedirect = false; 
+1

स्वर्ण! कभी नहीं जानता था ... चीयर्स! – RPM1984

1

सेट AllowAutoRedirect सच करने के लिए आप अनुरोध स्वचालित रूप से संसाधन के नए स्थान के लिए HTTP पुनर्निर्देशन हेडर का पालन करना चाहते हैं।

यदि AllowAutoRedirect गलत पर सेट है, तो 300 से 39 9 तक HTTP स्थिति कोड वाले सभी प्रतिक्रिया एप्लिकेशन पर लौटा दी जाती है।

आप MaximumAutomaticRedirections संपत्ति द्वारा अनुसरण करने के लिए अधिकतम पुनर्निर्देशन भी सेट कर सकते हैं।

उपयोग इस ऑटो पुनर्निर्देशन को रोकने के लिए myHttpWebRequest.AllowAutoRedirect=false;

संबंधित मुद्दे