2015-06-19 9 views
5

मुझे कोई समस्या है। जब मैं उपयोगकर्ता को एमवीसी एक्शन से गैर-http यूआरएल पर रीडायरेक्ट करने का प्रयास करता हूं, तो यह लौटाता है:रीडायरेक्ट रिटर्न "ऑब्जेक्ट ले जाया गया"

ऑब्जेक्ट यहां स्थानांतरित हो गया। (फ़िडलर से)

पूर्ण प्रतिक्रिया:

HTTP/1.1 301 Moved Permanently 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Location: myGame-app://test.somespecificdata 
Server: Microsoft-IIS/8.0 
X-AspNetMvc-Version: 4.0 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcUGlvdHJcRGVza3RvcFxUYWtlc0NhcmVcVGFrZXNDYXJlXERvY3RvcnNcRWRvY3RvclxDb25zdWx0YXRpb25cMTkx?= 
X-Powered-By: ASP.NET 
Date: Thu, 18 Jun 2015 18:19:35 GMT 
Content-Length: 457 

<html><head><title>Object moved</title></head><body> 
<h2>Object moved to <a href="myGame-app%3a%2f%2ftestprotocol.somespecificdata">here</a>.</h2> 

<!-- Visual Studio Browser Link --> 
<script type="application/json" id="__browserLink_initializationData"> 
    {"appName":"Firefox"} 
</script> 
<script type="text/javascript" src="http://localhost:53098/4c9c75263d91451fa797f9041e4bd0f3/browserLink" async="async"></script> 
<!-- End Browser Link --> 

</body></html> 

मेरे एक्शन (छद्म कोड के साथ):

[HttpGet] 
public ActionResult Consultation(int id) 
{ 
     //.. specific business logic 
     if(IsMobile()){ 
      return RedirectPermanent("myGame-app://test.somespecificdata"); 
     } 
     else{ 
      return View("AboutGame", SomeSpecificModel); 
     } 
} 

एक ही स्थिति return Redirect() बजाय return RedirectPermanent() के साथ है।

मेरा मुख्य लक्ष्य किसी ऐसे उपयोगकर्ता को रीडायरेक्ट करना है जो मोबाइल ब्राउज़र का उपयोग विशेष प्रोटोकॉल (http नहीं) के साथ यूआरएल में करता है। यह विशेष प्रोटोकॉल (myGame-app://) मेरा मोबाइल ऐप according to this Stack discussion चलाता है। Object moved to here जानकारी के बिना, मैं इसे कैसे प्राप्त कर सकता हूं?

सादर

उत्तर

0

रीडायरेक्ट/RedirectPermanent तरीकों युक्त "यहां ले जाया" -HTML जवाबी कार्रवाई के लिए एक शरीर जोड़ें। आप एक "खाली" प्रतिक्रिया सिर्फ प्रतिक्रिया अपने आप को सेट करना चाहते हैं:

HttpContext.Current.Response.Redirect("url", false); 
HttpContext.Current.Response.StatusCode = 301; 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

ध्यान रखें कि इस के बाद अपने तर्क के बाकी निष्पादित किया जाएगा, ताकि कोई और यकीन है कि कुछ भी नहीं है (फिल्टर आदि) बनाने कि प्रतिक्रिया अनुप्रेषित सकता है इसे स्थापित करने के बाद फिर से होता है।

संबंधित मुद्दे