从ASP.NET MVC控制器重定向到外部URI

use*_*498 163 url asp.net-mvc redirect

我正在尝试从操作方法重定向到外部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);
    }
Run Code Online (Sandbox Code Playgroud)

谢谢,克里斯

Yur*_*ich 323

如果您正在谈论ASP.NET MVC,那么您应该有一个返回以下内容的控制器方法:

return Redirect("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

否则,我们需要有关您在重定向中获得的错误的更多信息.我会逐步确保网址不是空的.

  • 或者,您可以这样做:返回new RedirectResult("yourURL",true); 它几乎完全相同,但在最后给出了参数来指示它是否是永久重定向(HTTP 301与其他东西,307可能?) (5认同)
  • Redirect(rul) 是 302,RedirectPermanent(url) 是 301。检查:http://stackoverflow.com/questions/17517318/redirect-vs-redirectpermanent-in-asp-net-mvc (2认同)
  • @SteveEggering 查看 /sf/ask/758114871/ (2认同)

sto*_*tom 15

使用JavaScript

 public ActionResult Index()
 {
    return Content("<script>window.location = 'http://www.example.com';</script>");
 }
Run Code Online (Sandbox Code Playgroud)

注意:正如@Jeremy Ray Brown所说,这不是最佳选择,但在某些情况下您可能会觉得有用.

希望这可以帮助.

  • 信不信由你,像这种方法的确对我有所帮助.我们有一个混合的ASP.NET MVC/AngularJS应用程序,其中包含许多旧的Web表单代码.我使用类似的东西重定向到使用Angular路由的URL.由于Angular路由遵循URL中的#标记,因此只能在客户端识别,因此不能将Redirect用于此类URL. (5认同)
  • 像这样的事情可以工作,但控制器决定要执行的操作。您不需要参与脚本。 (2认同)
  • 对不起,如果我不礼貌@stom。当我需要使用重定向运行一些脚本时,我会使用这种方法,比如在 Google Analytics 上计算一次访问。 (2认同)
  • 这终于有效了。@Yuriy 的直接重定向解决方案对我来说失败了。出于安全原因,前往 MVC 应用程序的请求必须通过代理服务器爬网 - 带有重写插件 + 重写规则的 IIS。这种组合可能会扰乱重定向 URL。所以即。当我想从 https://example.com/action 重定向到 https://www.example.org/?search=xyz 时,使用 `return Redirect("https://www.example.org/?search= xyz");` 结果重定向到 https://example.com/?search=xyz。 (2认同)