如何从C#控制器重定向到外部URL


77

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

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

我该怎么做?

尝试过:

System.Web.HttpContext.Current.Response.Redirect

但这没用。


我认为您无法做到这一点-这是跨域安全冲突。
Brian Driscoll 2012年

消费者如何使用Web服务?
Kirk Woll'3

定义“作为Web服务”。如何访问控制器动作?您可以发送重定向响应,但是如果该响应不针对标准的Web浏览器请求,则可能会被忽略。
大卫

1
@EladBenda:我不确定324错误的实际含义。我怀疑JavaScript重定向也应该包含http://URL的段。
大卫

Answers:


137

使用控制器的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调用它。
Elad Benda'3

您是要重定向整个页面还是仅重定向ajax响应?
jrummell 2012年

真的有像您一样创建匿名类型的方法吗?(新的{url:“ example.com ”})
Elad Benda 2012年

语法错误,抱歉。应该是new {url = "example.com"}
jrummell 2012年

1
@dipievil javascript应该放在您的视图中。
jrummell 2015年

14

试试这个:

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

4
请注意,您不能使用“ www.website.com”-您必须提供http://或https://语法
markthewizard1234

2
谢谢@ markthewizard1234在我浏览过的所有答案中,您的笔记是使我明白的一件事。我没有想到,因为我使用的是动态重定向到Intranet站点。
LuqJensen

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.