Server.Transfer बनाम। Response.Redirect


263

बीच क्या अंतर है Server.Transferऔर Response.Redirect?

  • प्रत्येक के फायदे और नुकसान क्या हैं?
  • एक दूसरे पर कब उचित है?
  • जब कोई उचित नहीं है?

3
नीचे साइट के भीतर फायदे और नुकसान बताए गए हैं। developer.com/net/asp/article.php/3299641 लेख में एक दिलचस्प बात यह है कि Server.Transfer में Server.Redirect की तुलना में अधिक सर्वर बिजली की खपत होती है।
रे लू

Server.Transfer पेज अनुरोधों को कम करता है, इसलिए मुझे लगता है कि यह उस संबंध में "बेहतर" है। हालाँकि, Response.Redirect उपयोगकर्ता को बाहरी साइट पर भेज सकता है जबकि Server.Transfer नहीं कर सकता।
codeConcussion

1
यदि आप IIS 7 एकीकृत मोड पर चल रहे हैं, तो आप Server.TransferRequestइसके बजाय का उपयोग करने पर विचार कर सकते हैं Server.Transfer
Haacked

@ हॅाकेड को यह पढ़ना चाहिए कि शुरुआत में, Server.TransferRequest ने मेरी समस्याओं को हल किया iwth वेब मैट्रिक्स और iis7। ग्रेसियस। उन्हें यहां लगाना चाहिए।
जेसन सेब्रिंग

जवाबों:


234

Response.Redirectबस नीचे एक संदेश (HTTP 302) ब्राउज़र को भेजता है।

Server.Transfer ब्राउज़र को कुछ भी जाने बिना होता है, ब्राउज़र एक पेज का अनुरोध करता है, लेकिन सर्वर दूसरे की सामग्री को वापस करता है।


क्या यह वेब मैट्रिक्स के साथ CSHTML पृष्ठों के साथ काम करता है? जब मैं एक CSHTML पेज जैसे Server.Transfer ("~ / somepage.cshtml", सत्य) के लिए एक Server.Transfer कर रहा है, तो यह काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं हो सकता है, लेकिन अन्य प्रकार के पृष्ठों के लिए काम करने लगता है। हां मेरे पास रेजर स्थापित है और पृष्ठ अपेक्षा के अनुरूप काम करते हैं।
जेसन सीब्रिंग

11
अरे पता चला। आपको cshtml वेब मैट्रिक्स पृष्ठों के लिए Server.TransferRequest का उपयोग करना होगा।
जेसन सेब्रिंग

क्या Server.Transfer () केवल भौतिक पृष्ठों पर स्थानांतरित होता है? उदाहरण के लिए। अगर मैं Server.Transfer ("default / category1.aspx") में स्थानांतरण करता हूं, तो क्या इसमें डिफ़ॉल्ट फ़ोल्डर और श्रेणी 1, aspx पृष्ठ होना चाहिए?
.मव

95

Response.Redirect()आपको एक नए पेज पर भेजेगा, एड्रेस बार को अपडेट करेगा और ब्राउज़र हिस्ट्री में जोड़ेगा। अपने ब्राउज़र पर आप वापस क्लिक कर सकते हैं।

Server.Transfer()पता बार नहीं बदलता है। तुम पीछे नहीं हट सकते।

मैं उपयोग करता हूं Server.Transfer()जब मैं नहीं चाहता कि उपयोगकर्ता यह देखे कि मैं कहां जा रहा हूं। कभी-कभी "लोडिंग" प्रकार पृष्ठ पर।

अन्यथा मैं हमेशा उपयोग करूंगा Response.Redirect()


75

संक्षिप्त होने के लिए: Response.Redirectबस ब्राउज़र को दूसरे पृष्ठ पर जाने के लिए कहता है। Server.Transferसर्वर अनुरोधों को कम करने में मदद करता है, URL को समान रखता है और थोड़ी बग-बशिंग के साथ, आपको क्वेरी स्ट्रिंग को स्थानांतरित करने और चर बनाने की अनुमति देता है।

मुझे कुछ मिला और ( स्रोत ) से सहमत हूँ :

Server.Transferइसमें समान है कि यह उपयोगकर्ता को दूसरे पृष्ठ पर इस तरह के बयान के साथ भेजता है Server.Transfer("WebForm2.aspx")। हालांकि, बयान के कई अलग-अलग फायदे और नुकसान हैं।

सबसे पहले, Server.Transfer सर्वर संसाधनों का उपयोग करके दूसरे पृष्ठ पर स्थानांतरित करना । ब्राउज़र को रीडायरेक्ट बताने के बजाय, यह वेब सर्वर पर "फ़ोकस" को बदल देता है और अनुरोध को स्थानांतरित करता है। इसका मतलब है कि आप बहुत से HTTP अनुरोधों के माध्यम से नहीं आते हैं, जिससे आपके वेब सर्वर पर दबाव कम होता है और आपके एप्लिकेशन तेजी से चलते हैं।

लेकिन ध्यान रखें: क्योंकि "स्थानांतरण" प्रक्रिया केवल उन साइटों पर काम कर सकती है जो सर्वर पर चल रहे हैं; आप Server.Transferउपयोगकर्ता को किसी बाहरी साइट पर भेजने के लिए उपयोग नहीं कर सकते । केवल वही Response.Redirectकर सकता है।

दूसरे, Server.Transferब्राउज़र में मूल URL को बनाए रखता है। यह वास्तव में डेटा प्रविष्टि तकनीकों को सुव्यवस्थित करने में मदद कर सकता है, हालांकि यह डिबगिंग के दौरान भ्रम की स्थिति पैदा कर सकता है।

यह सब नहीं है: इस Server.Transferविधि का एक दूसरा पैरामीटर भी है- "प्रिजर्वफ़ॉर्म"। यदि आप इसे Trueऐसे स्टेटमेंट का उपयोग करके सेट करते हैं , जैसे Server.Transfer("WebForm2.aspx", True)मौजूदा क्वेरी स्ट्रिंग और किसी भी प्रकार के चर अभी भी आपके द्वारा स्थानांतरित किए जा रहे पेज पर उपलब्ध होंगे।

उदाहरण के लिए, यदि आपके WebForm1.aspx में TextBox1 नामक एक TextBox नियंत्रण है और आपने TrueF के लिए निर्धारित परिरक्षण पैरामीटर के साथ WebForm2.aspx पर स्थानांतरित किया है, तो आप संदर्भ द्वारा मूल पृष्ठ टेक्स्ट कंट्रोल का मान पुनः प्राप्त कर पाएंगे Request.Form("TextBox1")


10
टिप्पणी के लिए +1 लेकिन ऐसा लगता है कि डेवलपर . com/net/asp/article.php/3299641 से शब्दशः कॉपी किया गया है । यदि यह किसी अन्य स्रोत से है, तो आपको लीज़ का हवाला देना चाहिए।
जॉननो नोलन

... लेकिन उन्होंने इसकी नकल की है कि उन्हें आपका हवाला देना चाहिए।
जॉननो नोलन

7
मैंने कहा: कुछ मुझे मिला और मैं इससे सहमत हूं;
TStamper

6
स्रोत से लिंक करना चाहिए और प्रतिलिपि किए गए भागों के लिए उद्धरण स्वरूपण / हाइलाइटिंग का उपयोग करना चाहिए।
क्रिस डब्ल्यू। री।

1
कैसे कर सकते हैं maintaining the original URL... ...really help streamline data entry techniques?
जॉन्स डेब

36

Response.Redirect() जब इस्तेमाल किया जाना चाहिए:

  • हम अपने सर्वर पर या किसी अन्य वेब सर्वर पर कुछ सादे HTML पृष्ठों के अनुरोध को पुनर्निर्देशित करना चाहते हैं
  • हम प्रत्येक अनुरोध पर सर्वर को अतिरिक्त चक्कर लगाने के बारे में परवाह नहीं करते हैं
  • हमें मूल अनुरोध से क्वेरी स्ट्रिंग और फॉर्म वेरिएबल्स को संरक्षित करने की आवश्यकता नहीं है
  • हम चाहते हैं कि हमारे उपयोगकर्ता नए पुनर्निर्देशित URL को देखने में सक्षम हों जहां वह अपने ब्राउज़र में पुनर्निर्देशित किया गया हो (और यदि आवश्यक हो तो इसे बुकमार्क करने में सक्षम हो)

Server.Transfer() जब इस्तेमाल किया जाना चाहिए:

  • हम उसी सर्वर पर एक .aspx पृष्ठ पर वर्तमान पृष्ठ अनुरोध स्थानांतरित करना चाहते हैं
  • हम सर्वर संसाधनों को संरक्षित करना चाहते हैं और सर्वर को अनावश्यक राउंडट्रिप्स से बचना चाहते हैं
  • हम क्वेरी स्ट्रिंग और फॉर्म वेरिएबल्स (वैकल्पिक रूप से) संरक्षित करना चाहते हैं
  • हमें वास्तविक URL दिखाने की आवश्यकता नहीं है जहाँ हमने उपयोगकर्ताओं के वेब ब्राउज़र में अनुरोध को पुनः निर्देशित किया है

2
बहुत स्पष्ट, मेरे लिए यह एक स्वीकृत उत्तर के रूप में बेहतर है।
बलजीतसिंह

28

पहले पेज के ग्राहक के आने के बाद प्रतिक्रिया। रीडायरेक्ट पेज को दूसरे पेज पर रीडायरेक्ट करता है। तो ग्राहक पुनर्निर्देशन जानता है।

Server.Transfer पृष्ठ के वर्तमान निष्पादन को समाप्त करता है। ग्राहक पुनर्निर्देशन नहीं जानता है। यह आपको क्वेरी स्ट्रिंग को स्थानांतरित करने और चर बनाने की अनुमति देता है।

इसलिए यह आपकी आवश्यकताओं पर निर्भर करता है कि कौन सा बेहतर है।


1
क्या कोई दुर्भावनापूर्ण उपयोगकर्ता Response.Redirectमूल पेज को लोड करने के लिए बायपास कर सकता है, भले ही मैंने कॉल किया हो Response.Redirect?
नॉर्थबेन

@ नोर्थबेन - "नो" कहना कभी आसान नहीं होता, जब टेक्नोलॉजी की बात आती है क्योंकि लगभग किसी भी चीज़ से समझौता किया जा सकता है - लेकिन इस मामले में वे कैसे कर सकते हैं - मैं कहूंगा कि वे नहीं कर सकते थे ... लेकिन मैं कई बार गलत साबित हो चुका हूं। ज़िन्दगी में।
19

23

यहां छवि विवरण दर्ज करें

"response.redirect" और "server.transfer" पृष्ठ को निष्पादित करते समय उपयोगकर्ता को एक पृष्ठ से दूसरे पृष्ठ पर स्थानांतरित करने में मदद करता है। लेकिन जिस तरह से वे इस स्थानांतरण / पुनर्निर्देशन को करते हैं वह बहुत अलग है।

यदि आप दृश्य व्यक्ति हैं और सिद्धांत के बजाय प्रदर्शन देखना चाहते हैं, तो मैं नीचे दिए गए फेसबुक वीडियो को देखने का सुझाव दूंगा जो कि अधिक प्रदर्शनकारी तरीके से अंतर को बताता है।

https://www.facebook.com/photo.php?v=762186150488997

उनके बीच मुख्य अंतर यह है कि स्थानांतरण कौन करता है। "Response.redirect" में ब्राउज़र द्वारा ट्रांसफर किया जाता है जबकि "server.transfer" में यह सर्वर द्वारा किया जाता है। आइए इस कथन को और अधिक विस्तार से समझने की कोशिश करते हैं।

"Server.Transfer" में निम्नलिखित है कि कैसे स्थानांतरण होता है: -

1. उपयोगकर्ता ASP.NET पृष्ठ पर एक अनुरोध भेजता है। नीचे दिए गए आंकड़े में "WebForm1" पर अनुरोध भेजा गया है और हम "Webform2" पर नेविगेट करना चाहेंगे।

2.Server "Webform1" को निष्पादित करना शुरू कर देता है और पृष्ठ का जीवन चक्र शुरू होता है। लेकिन पेज का पूरा जीवन चक्र पूरा होने से पहले "Server.transfer" "WebForm2" पर होता है।

3. "वेबफॉर्म 2" पृष्ठ ऑब्जेक्ट बनाया गया है, पूर्ण पृष्ठ जीवन चक्र निष्पादित किया जाता है और आउटपुट HTML प्रतिक्रिया तब ब्राउज़र को भेजी जाती है।

यहां छवि विवरण दर्ज करें

जबकि "Response.Redirect" में नेविगेशन के लिए घटनाओं का क्रम है: -

1.Client (ब्राउज़र) एक पेज पर एक अनुरोध भेजता है। नीचे दिए गए आंकड़े में "WebForm1" पर अनुरोध भेजा गया है और हम "Webform2" पर नेविगेट करना चाहेंगे।

2. "वेबफॉर्म 1" का लाइफ़ साइकल निष्पादित होने लगता है। लेकिन जीवन चक्र के बीच में "Response.Redirect" होता है।

3.अब सर्वर रीडायरेक्ट करने के बजाय, वह ब्राउज़र को HTTP 302 कमांड भेजता है। यह कमांड ब्राउज़र को बताता है कि उसे "Webform2.aspx" पेज पर GET अनुरोध शुरू करना है।

4.Browser 302 कमांड की व्याख्या करता है और "Webform2.aspx" के लिए GET अनुरोध भेजता है।

यहां छवि विवरण दर्ज करें

दूसरे शब्दों में "Server.Transfer" को सर्वर द्वारा निष्पादित किया जाता है जबकि "Response.Redirect" को थ्रू ब्राउज़र द्वारा निष्पादित किया जाता है। पेज का रीडायरेक्ट करने के लिए "Response.Redirect" को दो अनुरोधों की आवश्यकता होती है।

तो कब "Server.Transfer" का उपयोग करें और कब "Response.Redirect" का उपयोग करें?

"Server.Transfer" का उपयोग करें जब आप उन पृष्ठों को नेविगेट करना चाहते हैं जो एक ही सर्वर पर रहते हैं, तो "Response.Redirect" का उपयोग करें जब आप उन पृष्ठों के बीच नेविगेट करना चाहते हैं जो विभिन्न सर्वर और डोमेन पर रहते हैं।

यहां छवि विवरण दर्ज करें

नीचे एक सारांश तालिका दी गई है, जिसमें मतभेदों का वर्णन किया गया है और किस परिदृश्य में उपयोग किया जाना है।

यहां छवि विवरण दर्ज करें


उपयोगी है जब Server.Transfer और Response.Redirect stackoverflow.com/questions/1433448/thread-was-being-aborted
Kiquenet

के लिए Server.Transfer: एक ही सर्वर या एक ही IIS वेब साइट ?
किनिकेत

क्या आप मेरे संपादन के लिए आवश्यक कम से कम 6 वर्णों के कारण निम्नलिखित पैराग्राफ को अपडेट कर सकते हैं: दूसरे शब्दों में "Server.Transfer" को सर्वर द्वारा निष्पादित किया जाता है जबकि "Response.Redirect" को थ्रू ब्राउज़र द्वारा निष्पादित किया जाता है। पेज का रीडायरेक्ट करने के लिए "Response.Redirect" को दो अनुरोधों की आवश्यकता होती है
पाऊल ने

11

Server.Transfer की सुंदरता आप इसके साथ क्या कर सकते हैं:

TextBox myTxt = (TextBox)this.Page.PreviousPage.FindControl("TextBoxID");

जब तक आप Server.Transfer का उपयोग नहीं करते हैं, तब तक आप अपने पिछले पृष्ठ से कुछ भी प्राप्त कर सकते हैं


10

स्कारलेटगार्डन की टिप्पणी के अलावा, आपको खोज इंजन और आपके पुनर्निर्देशन के प्रभाव पर भी विचार करना होगा। क्या यह पृष्ठ स्थायी रूप से चला गया है? अस्थायी रूप से? इससे फर्क पड़ता है।

देखें: प्रतिक्रिया। अप्रत्यक्ष बनाम "301 स्थानांतरित स्थायी रूप से" :

हम सभी ने एक समय या किसी अन्य पर Response.Redirect का उपयोग किया है। यह आगंतुकों को सही दिशा में इंगित करने का त्वरित और आसान तरीका है यदि वे किसी तरह गलत स्थान पर समाप्त होते हैं। लेकिन क्या आप जानते हैं कि जब आप वास्तव में "301 मूव्ड परमानेंटली" भेजना चाहते हैं, तो Response.Redirect "302 Found" का HTTP प्रतिक्रिया स्थिति कोड भेजता है?

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


लिंक काम नहीं करता है। इसके बजाय इस web.archive.org लिंक का उपयोग करें ।
पेट

6

स्थानांतरण पूरी तरह से सर्वर-साइड है। क्लाइंट पता बार स्थिर रहता है। अनुरोधों के बीच संदर्भ के हस्तांतरण के बारे में कुछ जटिलता। फ़्लशिंग और पुनः आरंभ करना पृष्ठ संचालकों को महंगा पड़ सकता है, इसलिए अपना स्थानांतरण आरंभिक में करें जैसे कि HttpModule में BeginRequest के दौरान। MSDN डॉक्स को ध्यान से पढ़ें, और HttpContext.Request के नए मूल्यों को परखें और समझें - विशेष रूप से पोस्टबैक परिदृश्यों में। हम आमतौर पर त्रुटि परिदृश्यों के लिए Server.Transfer का उपयोग करते हैं।

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


6

ऊपर बताए अनुसार कई अंतर हैं। इन सबके अलावा, एक और अंतर है। Response.Redirect()किसी भी पृष्ठ पर उपयोगकर्ता को पुनर्निर्देशित करने के लिए उपयोग किया जा सकता है जो अनुप्रयोग का हिस्सा नहीं है, लेकिन Server.Transfer()इसका उपयोग केवल अनुप्रयोग के भीतर उपयोगकर्ता को पुनर्निर्देशित करने के लिए किया जा सकता है।

//This will work.
Response.Redirect("http://www.google.com");

//This will not work.
Server.Transfer("http://www.google.com");

5

Response.Redirect अधिक महंगा है क्योंकि यह सर्वर के लिए एक अतिरिक्त यात्रा जोड़ता है यह जानने के लिए कि कहां जाना है।

Server.Transfer अधिक कुशल है, हालांकि यह उपयोगकर्ता के लिए थोड़ा गलत हो सकता है क्योंकि Url शारीरिक रूप से परिवर्तित नहीं होता है।

मेरे अनुभव में, प्रदर्शन का अंतर बाद के दृष्टिकोण का उपयोग करने के लिए पर्याप्त महत्वपूर्ण नहीं है


4

Server.Transfer क्लाइंट ब्राउज़र में URL नहीं बदलता है, इसलिए प्रभावी रूप से ब्राउज़र को नहीं पता है कि आप किसी अन्य सर्वर-साइड हैंडलर में बदल गए हैं। Response.Redirect ब्राउज़र को किसी भिन्न पृष्ठ पर जाने के लिए कहता है, इसलिए शीर्षक में url बदलता है।

Server.Transfer थोड़ा तेज़ है क्योंकि यह सर्वर के लिए एक राउंडट्रिप से बचता है, लेकिन url का गैर-परिवर्तन आपके लिए अच्छा या बुरा हो सकता है, यह इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं।


4

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

Server.Transfer: यह सर्वर पर पहले पेज से दूसरे पेज पर निष्पादन ट्रांसफर करता है। जहाँ तक ब्राउज़र क्लाइंट का सवाल है, इसने एक अनुरोध किया और प्रारंभिक पृष्ठ वह है जो सामग्री के साथ प्रतिक्रिया दे रहा है। इस दृष्टिकोण का लाभ क्लाइंट ब्राउज़र से सर्वर पर एक कम गोल यात्रा है। इसके अलावा, किसी भी पोस्ट किए गए फॉर्म चर और क्वेरी स्ट्रिंग पैरामीटर दूसरे पेज पर भी उपलब्ध हैं।


3

स्थानांतरण के बारे में अधिक जानकारी (), यह वास्तव में Server.Execute () + Response.End () है, इसका स्रोत कोड नीचे है (मोनो / .net 4.0 से):

public void Transfer (string path, bool preserveForm)
{
    this.Execute (path, null, preserveForm, true);
    this.context.Response.End ();
}

और Execute के लिए (), इसे चलाने के लिए क्या दिया गया मार्ग का हैंडलर है, देखें

ASP.NET यह सत्यापित नहीं करता है कि मौजूदा उपयोगकर्ता Execute विधि द्वारा वितरित संसाधन को देखने के लिए अधिकृत है । हालाँकि ASP.NET प्राधिकरण और प्रमाणीकरण तर्क मूल संसाधन हैंडलर कहे जाने से पहले चलता है, ASP.NET सीधे Execute विधि द्वारा इंगित हैंडलर को कॉल करता है और नए संसाधन के लिए प्रमाणीकरण और प्राधिकरण तर्क को पुन: चलाएँ नहीं करता है। यदि आपके एप्लिकेशन की सुरक्षा नीति के लिए संसाधन तक पहुँचने के लिए उपयुक्त प्राधिकरण की आवश्यकता होती है, तो अनुप्रयोग को reauthorization को बाध्य करना चाहिए या कस्टम एक्सेस-कंट्रोल तंत्र प्रदान करना चाहिए।

आप निष्पादित विधि के बजाय पुनर्निर्देशन विधि का उपयोग करके सौंदर्यीकरण को बाध्य कर सकते हैं । रीडायरेक्ट क्लाइंट-साइड रीडायरेक्ट करता है जिसमें ब्राउज़र नए संसाधन का अनुरोध करता है। क्योंकि यह पुनर्निर्देशन प्रणाली में प्रवेश करने का एक नया अनुरोध है, यह इंटरनेट सूचना सेवाओं (IIS) और ASP.NET सुरक्षा नीति के सभी प्रमाणीकरण और प्राधिकरण तर्क के अधीन है।

- MSDN से


2

Response.Redirect में एक अतिरिक्त राउंड ट्रिप शामिल है और एड्रेस बार को अपडेट करता है।

Server.Transfer पता बार को बदलने का कारण नहीं बनता है, सर्वर दूसरे पेज से सामग्री के साथ अनुरोध का जवाब देता है

जैसे

Response.Redirect: -

  1. क्लाइंट पर ब्राउज़र एक पेज http: //InitiallyRequestedPage.aspx का अनुरोध करता है
  2. सर्वर पर रिडायरेक्ट एड्रेस http: //AnotherPage.aspx पर 302 पास करने के साथ रिक्वेस्ट का जवाब देता है ।
  3. क्लाइंट पर ब्राउज़र पता http: //AnotherPage.aspx के लिए दूसरा अनुरोध करता है ।
  4. सर्वर से http: //AnotherPage.aspx की सामग्री के साथ प्रतिक्रिया करता है

Server.Transfer: -

  1. क्लाइंट ब्राउज़र पर एक पृष्ठ http: //InitiallyRequestedPage.aspx का अनुरोध करता है
  2. सर्वर पर सर्वर। क्रान्ति http: //AnotherPage.aspx के लिए
  3. सर्वर पर प्रतिक्रिया http: //InitiallyRequestedPage.aspx से सामग्री वापस करने के लिए http: //AnotherPage.aspx से अनुरोध किया जाता है

Response.Redirect

पेशेवरों: - रेस्टफुल - यह एड्रेस बार को बदलता है, एड्रेस का इस्तेमाल स्टेट इनबेटन रिक्वेस्ट के बदलाव को रिकॉर्ड करने के लिए किया जा सकता है।

विपक्ष: - धीमा - क्लाइंट और सर्वर के बीच एक अतिरिक्त राउंड ट्रिप है। क्लाइंट और सर्वर के बीच पर्याप्त विलंबता होने पर यह महंगा हो सकता है।

Server.Transfer

पेशेवरों: - त्वरित।

विपक्ष: - राज्य खो गया - यदि आप पश्चात पोस्ट के जवाब में एप्लिकेशन की स्थिति को बदलने के लिए Server.Transfer का उपयोग कर रहे हैं, यदि पृष्ठ को फिर से लोड किया गया है तो वह राज्य खो जाएगा, क्योंकि पता बार वैसा ही होगा जैसा वह था पहले अनुरोध पर।


0

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

Server.Transfer Server.Transfer () एड्रेस बार नहीं बदलता है, हम पीछे नहीं हट सकते। हमें Server.Transfer () का उपयोग नहीं करना चाहिए जब वह उपयोगकर्ता को यह नहीं देखना चाहता कि वह कहां जा रहा है। "लोडिंग" प्रकार पृष्ठ पर शायद ही कभी। यह एक ही सर्वर पर दूसरे .aspx पृष्ठ पर वर्तमान पृष्ठ अनुरोध स्थानांतरित करता है। यह सर्वर संसाधनों को सुरक्षित रखता है और सर्वर को अनावश्यक राउंडट्रिप्स से बचाता है। यह क्वेरी स्ट्रिंग और फॉर्म वेरिएबल्स (वैकल्पिक रूप से) को संरक्षित करता है। यह वास्तविक URL नहीं दिखाता है जहाँ यह उपयोगकर्ताओं के ब्राउज़र में अनुरोध को पुनर्निर्देशित करता है। Server.Transfer ब्राउज़र के बिना कुछ भी जानता है, ब्राउज़र एक पेज का अनुरोध करता है, लेकिन सर्वर दूसरे की सामग्री को वापस करता है।

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