【问题标题】:how to redirect to external url from c# controller如何从 c# 控制器重定向到外部 url
【发布时间】:2012-04-02 02:36:15
【问题描述】:

我正在使用 c# 控制器作为 Web 服务。

在其中我想将用户重定向到外部 url。

我该怎么做?

试过了:

System.Web.HttpContext.Current.Response.Redirect

但是没有用。

【问题讨论】:

  • 我认为你不能这样做 - 这是跨域安全违规。
  • 消费者如何使用网络服务?
  • 定义“作为网络服务”。如何访问控制器操作?您可以发送重定向响应,但如果该响应不是标准的网络浏览器请求,那么它可能会被忽略。
  • @EladBenda:我不确定 324 错误的实际含义。不过,我怀疑 JavaScript 重定向还应该包含 URL 的 http:// 段。

标签: c# asp.net-mvc web-services


【解决方案1】:

使用控制器的Redirect() 方法。

public ActionResult YourAction()
{
    // ...
    return Redirect("http://www.example.com");
}

更新

您不能直接从 ajax 响应执行服务器端重定向。但是,您可以返回带有新 url 的 JsonResult 并使用 javascript 执行重定向。

public ActionResult YourAction()
{
    // ...
    return Json(new {url = "http://www.example.com"});
}

$.post("@Url.Action("YourAction")", function(data) {
    window.location = data.url;
});

【讨论】:

  • 我高兴得太早了。还是不行。我从 ajax POST 调用它。
  • 您是要重定向整个页面还是只重定向 ajax 响应?
  • 真的有办法像你一样创建匿名类型吗? (新{网址:“example.com”})
  • 语法错误,抱歉。应该是new {url = "example.com"}
  • @dipievil javascript 应该放在你的视图中。
【解决方案2】:

如果您使用的是 MVC,那么使用 RedirectResult 而不是使用 Response.Redirect 会更合适。

public ActionResult Index() {
        return new RedirectResult("http://www.website.com");
    }

参考 - https://blogs.msdn.microsoft.com/rickandy/2012/03/01/response-redirect-and-asp-net-mvc-do-not-mix/

【讨论】:

    【解决方案3】:

    试试这个:

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

    【讨论】:

    • 注意,您不能使用“www.website.com” - 您必须提供 http:// 或 https:// 语法
    • 谢谢@markthewizard1234 在我浏览的所有答案中,你的笔记是让我明白的一件事。我没有考虑它,因为我正在使用动态重定向到 Intranet 站点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2010-12-05
    • 2019-01-14
    • 2012-01-05
    • 1970-01-01
    • 2015-02-14
    相关资源
    最近更新 更多