ASP.NET MVC में पुनर्निर्देशित () बनाम पुनर्निर्देशन ()


80

के बीच क्या अंतर Redirect()है और RedirectPermanent()। मैं कुछ लेख पढ़ा था, लेकिन मुझे समझ नहीं आता है जब हम का उपयोग करना चाहिए Redirect()और RedirectPermanent()। क्या आप उदाहरण के टुकड़े दिखा सकते हैं।

जवाबों:


147

दोनों के बीच मूल अंतर यह है कि RedirectPermanentब्राउज़र को एक HTTP 301(स्थायी रूप से) स्थिति कोड भेजता है जबकि Redirectएक HTTP 302स्थिति कोड भेजेगा ।

उपयोग करें RedirectPermanentयदि संसाधन स्थायी रूप से ले जाया गया है और अब अपने पिछले स्थान में सुलभ नहीं होगा। अधिकांश ब्राउज़र इस प्रतिक्रिया को कैश करेंगे और फिर से मूल संसाधन का अनुरोध किए बिना स्वचालित रूप से रीडायरेक्ट करेंगे।

Redirectयदि संसाधन भविष्य में उसी स्थान (URL) में उपलब्ध हो सकता है, तो उपयोग करें ।

उदाहरण

मान लीजिए कि आपके सिस्टम में उपयोगकर्ता हैं। आपके पास मौजूदा उपयोगकर्ताओं को हटाने का एक विकल्प भी है। आपकी वेबसाइट में एक संसाधन है /user/{userid}जो किसी दिए गए उपयोगकर्ता के विवरण को प्रदर्शित करता है। यदि उपयोगकर्ता हटा दिया गया है, तो आपको /user/does-not-existपृष्ठ पर पुनर्निर्देशित करना होगा । इस मामले में:

यदि उपयोगकर्ता को फिर से बहाल नहीं किया जाएगा, तो आपको इसका उपयोग करना चाहिए RedirectPermanentताकि ब्राउज़र सीधे /user/does-not-existबाद के अनुरोधों में जा सके, भले ही यूआरएल इंगित करता हो /user/{userid}

यदि उपयोगकर्ता को भविष्य में बहाल किया जा सकता है, तो आपको एक नियमित उपयोग करना चाहिए Redirect



6
ध्यान दें कि RedirectPermanentडिबगिंग करते समय कष्टप्रद हो सकता है क्योंकि दूसरी बार जब आप क्लिक करते हैं, तो नियंत्रक की कार्रवाई को छोड़ दिया जाएगा और मूल फ़ंक्शन में कोई विराम बिंदु नहीं पहुंचता है यदि यह कहीं और पुनर्निर्देशित करता है। जब तक आप हर क्लिक से पहले अपना कैश खाली नहीं करते।
एंटोनी पेल्लेटियर

यदि आपने कभी स्थायी पुनर्निर्देशन के दुरुपयोग की गलती की है, तो क्या उस ब्राउज़र से संवाद करने का एक तरीका है जो पहले ही दौरा कर चुका है और स्थायी पुनर्निर्देशन प्राप्त कर चुका है?
eaglei22

17

RedirectPermanent301 है और Redirect302 स्टेटस कोड है


12
संदर्भ के लिए, ब्राउजर्स 301 को याद रख सकते हैं और यदि वे चाहें तो मूल URL को कभी भी फिर से न मारें, जबकि 302 इंगित करता है कि उन्हें हर एक बार फिर से जांच करनी चाहिए अगर रीडायरेक्ट अभी भी है। वास्तविक कार्यान्वयन के पाठ्यक्रम भिन्न हो सकते हैं, लेकिन उस के पीछे 301 और 302 आशय है
माइकल Stum

1

वे ब्राउज़र में विभिन्न प्रतिक्रिया कोड भेजते हैं। 301 एक स्थायी पुनर्निर्देशित, 302 एक अस्थायी एक है। अंतिम प्रभाव समान है, लेकिन अगर ग्राहक लिंक को लिंक करना चाहता है (सबसे आम क्लाइंट जो ऐसा करता है तो वह सर्च इंजन होगा) तो एक स्थायी रीडायरेक्ट ग्राहक को पुराने लिंक को अनदेखा करने और नए का उपयोग शुरू करने के लिए अपने रिकॉर्ड को अपडेट करने के लिए कहता है। । एक अस्थायी पुनर्निर्देशन क्लाइंट को बताता है कि पृष्ठ अभी के लिए पुनर्निर्देशित हो रहा है, लेकिन अपने अनुक्रमण डेटाबेस से पुराने लिंक को हटाने के लिए नहीं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.