c# - RedirectToRoute causes redirect loop -


  सार्वजनिक कार्यवाही लॉगआउट () {FormsAuthentication.SignOut (); रिडायरेक्ट रीरो ("होम") लौटें; }   

मुझे उम्मीद है कि इस क्रिया को उपयोगकर्ता को होमपेज पर पुनर्निर्देशित करने के बजाय, एक रीडायरेक्ट लूप होता है (क्रोम के अनुसार)।

उपरोक्त कार्रवाई एक नियंत्रक "व्यवस्थापक" क्षेत्र में जहां "होम" मार्ग को डिफ़ॉल्ट क्षेत्र के लिए परिभाषित किया गया है - मुझे यह संदेहास्पद है।

यहां अच्छे उपाय के लिए मार्ग है:

 < कोड> मार्गों के लिए। मार्गरेट ("होम", "{नियंत्रक} / {action} / {slug}", नया {नियंत्रक = "डाक", कार्रवाई = "सूचकांक", स्लग = यूआरएलपीरामिटर.ऑपरेशनल}, नया [] {" GoBlog.Controllers "});   

अपडेट

वापसी कथन को निम्न के साथ बदलकर अपेक्षित रूप से कार्य करने के लिए कार्य करेगा: < / P> <पूर्व> वापसी रीडायरेक्ट टोरो रूट ("होम", (रूटिंगटबल। मार्ग ["होम"] रूट के रूप में)। डीफॉल्ट्स);

मुझे यह जानना है कि यह मामला क्यों है। आदर्श रूप से मैं (बोझिल) दूसरा तर्क छोड़ सकता हूँ

यह समस्या कॉल RedirectToRoute (स्ट्रिंग) और आपके विशेष के लिए विशेष है मार्ग:

  मार्गों। MapRoute ("होम", "{नियंत्रक} / {action} / {slug}", नया {नियंत्रक = "डाक", कार्रवाई = "सूचकांक", स्लग = UrlParameter.Optional}, नया [] {"GoBlog.Controllers"});   

आप क्या अपेक्षित था RedirectToRoute , मार्ग की परिभाषित डिफॉल्ट के साथ {controller} / {action} / की अपनी मनमाना मार्ग की परिभाषा को आबाद कर देगा :

  नियंत्रक = "पोस्ट", एक्शन = "इंडेक्स"   

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

इसका एक बढ़िया उदाहरण है पुनर्निर्देशित करें (स्ट्रिंग) जो आपके वर्तमान तत्काल नियंत्रक को मानता है डिफ़ॉल्ट।

इसके साथ कंट्रास्ट करें:

  वापसी रीडायरेक्ट टोरो रूट ("होम", (रूटिंगटैबल। मार्ग ["होम"] रूट के रूप में)। चूक);   

अस्पष्ट वाइल्ड कार्ड मार्ग को पॉप्युलेट करने के बारे में सबसे अच्छा अनुमान लगाने के लिए फ्रेमवर्क को निर्देश देने के बजाय, आपने विशेष रूप से डिफ़ॉल्ट का उपयोग करने के लिए ढांचे को निर्देश दिया है मार्ग का निर्माण करने के लिए "होम" रूट के लिए रूट-योग्य और इसे रूट-ऑब्जेक्ट के रूप में लौटाते हैं।

Comments

Popular posts from this blog

php - how to change mysql_result($res, 0, "url"); to mysqli -

Delphi: missing interface declarations for UI Automation methods -

android - How to attach an image from an app to gmail -