从 ASP.NET MVC 控制器重定向到外部 URI
Posted
技术标签:
【中文标题】从 ASP.NET MVC 控制器重定向到外部 URI【英文标题】:Redirect to external URI from ASP.NET MVC controller 【发布时间】:2010-12-05 16:19:20 【问题描述】:我正在尝试从操作方法重定向到外部 url,但无法使其正常工作。有人能解释一下我的错误吗?
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】:如果您谈论的是 ASP.NET MVC,那么您应该有一个返回以下内容的控制器方法:
return Redirect("http://www.google.com");
否则,我们需要有关您在重定向中遇到的错误的更多信息。我会逐步确保网址不为空。
【讨论】:
您也可以选择这样做: return new RedirectResult("yourURL", true);这几乎完全相同,但在最后为您提供了参数以指示它是否是永久重定向(HTTP 301 与其他东西,也许是 307?) @Mr.Pichler 很可能是 302,但您可以随时与 Fiddler 核实。 Redirect(rul) 为 302,RedirectPermanent(url) 为 301。检查:***.com/questions/17517318/… 对使用本地 html 文件进行这项工作有什么想法吗?不起作用: > return Redirect("C:/Users/Me/Documents/test.html"); @SteveEggering 查看***.com/questions/10830212/…【参考方案2】:使用 JavaScript
public ActionResult Index()
return Content("<script>window.location = 'http://www.example.com';</script>");
注意:正如@Jeremy Ray Brown 所说,这不是最佳选择,但在某些情况下您可能会发现有用。
希望这会有所帮助。
【讨论】:
这样的事情可以工作,但控制器决定执行什么操作。您不需要参与脚本。 信不信由你,这种方法确实帮助了我。我们有一个混合的 ASP.NET MVC / AngularJS 应用程序,其中有很多旧的 Web 表单代码。我使用了类似的东西来重定向到使用 Angular 路由的 URL。由于 Angular 路由在 URL 中遵循 # 标记,因此只能在客户端识别,因此无法对此类 URL 使用重定向。 @TNT 是的,你是对的,我只是提供了这个选项,这可能对其他人有用。 对不起,如果我没有礼貌@stom。当我需要使用重定向运行一些脚本时,我会使用这种方法,比如在 Google Analytics 中计算一次访问。 这终于奏效了。 @Yuriy 的直接重定向解决方案对我来说失败了。出于安全原因,前往我们的 MVC 应用程序的请求必须通过代理服务器 - 带有重写插件 + 重写规则的 IIS。这种组合可能会与重定向 URL 混淆。所以即。当我想从example.com/action 重定向到example.org/?search=xyz 时,使用return Redirect("https://www.example.org/?search=xyz");
结果重定向到example.com/?search=xyz。【参考方案3】:
也许有人正在寻找的解决方案是这样的:
Response.Redirect("/Sucesso")
在视图中使用时也可以使用。
【讨论】:
【参考方案4】:试试这个(我用过 Home 控制器和 Index View):
return RedirectToAction("Index", "Home");
【讨论】:
这不会重定向到外部 URI,而是重定向到主控制器上的索引操作。以上是关于从 ASP.NET MVC 控制器重定向到外部 URI的主要内容,如果未能解决你的问题,请参考以下文章
在 POST 数据中从 Api 控制器重定向到 MVC 控制器
Javascript发布请求回调,从.NET MVC控制器重定向