2013-05-21 94 views
2

ASP.NET MVC 4项目如何重定向到控制器的外部网址?

如何重定向到来自HTTP的外部URL - > HTTPS从控制器? 我不能只输入:

var url = @"https://www.someurl.com" 
return Redirect(url); 

它不起作用。

而且我已经试过这样:

var uri = new UriBuilder(url) 
{ 
    Scheme = Uri.UriSchemeHttps 
}; 
return Redirect(uri.ToString()); 
+0

什么*不起作用*关于它?你取得了什么结果? –

+0

它会工作,如果你设置uri.Port = -1; //默认会有80端口,你需要默认的协议端口。 –

回答

1

我现在看到一个问题:我用

return Redirect(url); 

,但它是从阿贾克斯称为一个动作(我的失误不记得了),所以正确的方法是使用:

return JavaScript("window.location = '" + url + "'"); 
1

您可以RequireHttps属性标记你的动作。而你的链接将自动重定向到https

public class AccountController:Controller 
{ 
    [RequireHttps] 
    public ActionResult Login() 
    { 
     ... 
    } 
} 

您可以重定向从代码这个动作 - RedirectToAction

此外,你可以检查下一个线程的一些额外的想法 - Redirect HTTP to HTTPS

+0

但是,如果我想重定向到另一个域上的外部URL? –

+0

这不是你的代码? HM。它有可能是目标服务器重定向你到http? – RredCat

+0

这是我的,但我仍然无法找到如何去外部网址。如果我使用RedirectToAction(A)(以及标有[RequireHttps]的动作“A”),它靠近我的Action,我无法进入这个“A”动作。它变得对mvc不可见。 –

2

好我偶然发现了同样的问题:我有一个MVC网站运行在https和我有一些情况下,我需要重定向到一些外部网址,我收到作为参数,当这个网址是http网址 - 说http://www.somethingontheweb.com - 直白

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

实际上不起作用,因为毕竟它看起来像这样重定向到HTTPS://www.somethingontheweb.com不存在一样平常。

仍然不知道为什么它的工作原理是这样,但我已经找到了解决这一工作:我已经使出 meta refresh

所以我有一个页面:〜/查看/共享/ DoRedirect。 CSHTML这里是它的代码:

@{ 
    Layout = null; 
} 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="refresh" content="0; [email protected]" /> 
<title>redirecting</title> 
</head> 
<body> 
<p>redirecting...</p> 
</body> 
</html> 

,然后我的控制器代码只是

ViewBag.RedirectUrl = url; 
return View("DoRedirect"); 
相关问题