c# - Response.Redirect HTTP स्थिति कोड




asp.net asp-classic (4)

आपको जो त्रुटि मिल रही है वह प्रतिक्रिया के कारण नहीं है। अप्रत्यक्ष!

HTTP प्रतिक्रिया स्थिति कोड 301 स्थायी रूप से स्थायी पुनर्निर्देशन के लिए उपयोग किया जाता है, जिसका अर्थ है कि यूआरएल का उपयोग करते हुए वर्तमान लिंक या रिकॉर्ड्स जो कि 301 को स्थायी प्रतिक्रिया प्राप्त होती है, को प्रतिक्रिया के स्थान क्षेत्र में दिए गए नए यूआरएल में अपडेट किया जाना चाहिए।

ऐसा क्यों है कि एएसपी / एएसपी.NET Response.Redirect एक HTTP-302 स्थिति कोड ("अस्थायी रूप से स्थानांतरित") का उपयोग करता है, भले ही अधिकांश मामलों में HTTP-301 स्थिति कोड ("स्थायी रूप से स्थानांतरित") अधिक उपयुक्त होगा?


मैंने सफलता के साथ इस आसान स्थायी रीडायरेक्ट का उपयोग किया है:

public void RedirectPermanent(string newPath)
{
  HttpContext.Current.Response.Clear();
  HttpContext.Current.Response.Status = "301 Moved Permanently";
  HttpContext.Current.Response.AddHeader("Location", newPath);
  HttpContext.Current.Response.End();
}

हेनज़ी के जवाब के अलावा, वेब पर एकमात्र इकाई जो 301 की अधिक सूचना ले सकती है, वह खोज इंजन होगी। अधिकतर ब्राउज़र प्रारंभिक यूआरएल के बाद के किसी भी अनुरोध को स्वचालित रूप से रीडायरेक्ट करने के क्रम में 301 ट्रैक और रिकॉर्ड नहीं करेंगे। ब्राउज़र 301 का इलाज करते हैं कि वे 302 का इलाज कैसे करते हैं। इसलिए एएसपी.नेट में उत्पन्न गतिशील सामग्री में 302 काफी उपयुक्त है।


Response.Redirect का एक सामान्य उपयोग केस उपयोगकर्ता को किसी अन्य पृष्ठ पर पोस्ट-बैक के बाद सर्वर-साइड कोड में स्थानांतरित करना है, उदाहरण के लिए कुछ

private void MyButton_Click(object sender, EventArgs e)
{
    if (some condition) {
         Response.Redirect("ShowProduct.aspx");
    } else {
         Response.Redirect("SorryOutOfStock.aspx");
    }
}

उन मामलों में, 301 पूरी तरह से गलत होगा। असल में, मुझे लगता है कि उपर्युक्त मामला (कुछ यूआई इंटरैक्शन के बाद सशर्त रूप से उपयोगकर्ता को दूसरे पृष्ठ पर ले जाता है) एक वास्तविक -पृष्ठ-स्थानांतरित-से-दूसरे-यूआरएल-हमेशा के लिए परिदृश्य की तुलना में Response.Redirect का एक अधिक आम उपयोग है ( जहां 301 का रिटर्न कोड उचित होगा)।





asp-classic