2015-06-19 70 views
5

我有一個問題。當我嘗試將用戶重定向到來自MVC操作的非http URL時,它將返回:重定向返回「對象移動到」

對象移到此處。

完全反應(從小提琴手):

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)的URL。此特殊協議(myGame-app://)運行我的移動應用程序according to this Stack discussion。我怎樣才能做到這一點,沒有信息Object moved to here

問候

回答

0

的重定向/永久重定向方法添加一個體含有「在這裏移動」 -HTML的響應。 如果你想要一個「空」的反應只是爲自己設定的響應:可能重定向響應

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

要知道,你的邏輯在此之後的其餘部分將被執行,所以一定要確保沒有別的(過濾器等)設置後再次發生。