ASP.NET MVC नियंत्रक से बाहरी URI को पुनर्निर्देशित करें


170

मैं एक एक्शन विधि से बाहरी यूआरएल को पुनर्निर्देशित करने की कोशिश कर रहा हूं, लेकिन इसे काम करने के लिए नहीं मिल सकता। क्या कोई मेरी गलती पर कुछ प्रकाश डाल सकता है?

public void ID(string id)
    {
        string url = string.Empty;
        switch (id)
        {
            case "DB2FCB11-579F-4DA2-A68C-A6495B9BAAB5":

                url = "http://www.somesite.com";
                break;
        }
        Response.Redirect(url, true);
    }

धन्यवाद, क्रिस


1
आपकी क्या गलती है? या लक्षण? यह कहीं जाता है?
पॉल शशिकला

जवाबों:


342

यदि आप ASP.NET MVC के बारे में बात कर रहे हैं, तो आपके पास एक नियंत्रक विधि होनी चाहिए जो निम्नलिखित रिटर्न देती है:

return Redirect("http://www.google.com");

अन्यथा हमें उस त्रुटि पर अधिक जानकारी चाहिए जो आपको पुनर्निर्देशित हो रही है। मैं यह सुनिश्चित करने के लिए कदम उठाऊंगा कि url खाली न हो।


5
वैकल्पिक रूप से, आप इसके बजाय ऐसा कर सकते हैं: नया पुनर्निर्देशन वापस करें ("yourURL", सच); जो लगभग बिल्कुल समान है, लेकिन आपको यह इंगित करने के लिए अंत में पैरामीटर देता है कि यह स्थायी पुनर्निर्देशित है या नहीं (HTTP 301 बनाम कुछ और, 307 शायद?)
ctb

@ Mr.Pichler सबसे अधिक संभावना 302 है, लेकिन आप हमेशा फ़िडलर के साथ जांच कर सकते हैं।
यूरी फकटोरोविच

1
रीडायरेक्ट (rul) 302 है और RedirectPermanent (url) 301 है। चेक करें: stackoverflow.com/questions/17517318/…
TNT

स्थानीय HTML फ़ाइल के साथ यह काम करने पर कोई विचार? काम नहीं करता है:> वापसी पुनर्निर्देशित करें ("C: /Users/Me/Documents/test.html");
स्टीव एगरिंग

1
@SteveEggering बाहर की जाँच करें stackoverflow.com/questions/10830212/…
यूरी फकटोरोविक

15

जावास्क्रिप्ट का उपयोग करना

 public ActionResult Index()
 {
    return Content("<script>window.location = 'http://www.example.com';</script>");
 }

नोट: जैसा कि @ जेरेमी रे ब्राउन ने कहा, यह सबसे अच्छा विकल्प नहीं है, लेकिन आप कुछ स्थितियों में उपयोगी हो सकते हैं।

उम्मीद है की यह मदद करेगा।


1
ऐसा कुछ काम कर सकता है, लेकिन एक नियंत्रक यह तय करता है कि प्रदर्शन क्या करना है। आपको शामिल होने के लिए स्क्रिप्ट की आवश्यकता नहीं है।
जेरेमी रे ब्राउन

6
मानो या न मानो, इस दृष्टिकोण की तरह कुछ मेरी मदद की। हमारे पास एक हाइब्रिड ASP.NET MVC / AngularJS एप्लिकेशन है, जिसमें सभी पुराने वेब फॉर्म कोड बहुत सारे हैं। मैंने एक URL पर रीडायरेक्ट करने के लिए कुछ इसी तरह का उपयोग किया है जो कोणीय मार्ग का उपयोग करता है। क्योंकि कोणीय मार्ग URL में एक # चिह्न का अनुसरण करता है, यह केवल मान्यता प्राप्त क्लाइंट-साइड है, इसलिए ऐसे URL के लिए रीडायरेक्ट का उपयोग नहीं किया जा सकता है।
thesentiment

@TNT हाँ आप सही हैं, मैंने अभी इसे एक विकल्प के रूप में प्रदान किया है, जो दूसरों के लिए उपयोगी हो सकता है।
शैजुत

1
क्षमा करें अगर मैं @stom को विनम्र नहीं था। मैं इस दृष्टिकोण का उपयोग तब करता हूं जब मुझे कुछ स्क्रिप्ट को रीडायरेक्ट के साथ चलाने की आवश्यकता होती है, जैसे Google Analytics में एक विज़िट की गणना।
टीएनटी

यह आखिरकार काम करता है। @ युरि का सीधा पुनर्निर्देशन समाधान मेरे लिए विफल रहा। सुरक्षा कारणों से हमारे एमवीसी एप्लिकेशन पर जाने का अनुरोध प्रॉक्सी सर्वर के माध्यम से क्रॉल करना होगा - IIS रिवाइइट एडिन + रीराइट नियम के साथ। यह संयोजन संभवतः पुनर्निर्देशित URL के साथ गड़बड़ करता है। इसलिए। जब मैं से रीडायरेक्ट करना चाहते हैं example.com/action को example.org/?search=xyz , का उपयोग कर return Redirect("https://www.example.org/?search=xyz");परिणाम के लिए पुनः निर्देशित है example.com/?search=xyz
Kraken101



-3

इसे आज़माएं (मैंने होम कंट्रोलर और इंडेक्स व्यू का उपयोग किया है):

return RedirectToAction("Index", "Home");

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