2015-06-19 20 views
5

Mam problem. Gdy próbuję przekierować użytkownika do adresu URL innego niż http z działania MVC, zwraca:Zwroty powrotne "Obiekt przeniesiony do"

Obiekt przeniesiony do tego miejsca.

Pełna odpowiedź (z Skrzypek):

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> 

Moja akcja (z kodem pseudo):

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

Taka sama sytuacja jest z return Redirect() zamiast return RedirectPermanent().

Moim głównym celem jest przekierowanie użytkownika korzystającego z przeglądarki mobilnej na URL ze specjalnym protokołem (nie http). Ten specjalny protokół (myGame-app://) uruchamia moją aplikację mobilną according to this Stack discussion. Jak mogę to osiągnąć, bez informacji Object moved to here?

Pozdrowienia

Odpowiedz

0

Metody/RedirectPermanent Redirect dodać ciało do reakcji zawierającej „przeniosła się tutaj” -HTML. Jeśli chcesz „pustym” odpowiedź wystarczy ustawić reakcję siebie:

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

mieć świadomość, że reszta logiki po to zostanie wykonane, więc upewnij się, nic innego (filtry itp), które mogą przekierować odpowiedź znowu dzieje się po ustawieniu tego.

Powiązane problemy