2012-03-16 2 views
54

Я использую контроллер C# в качестве веб-сервиса.Как перенаправить на внешний url из контроллера C#

В нем я хочу перенаправить пользователя на внешний URL-адрес.

Как это сделать?

Пробовал:

System.Web.HttpContext.Current.Response.Redirect 

, но это не сработало.

+0

Я не думаю, что вы можете сделать это - это нарушение безопасности между доменами. –

+0

Как потребители потребляют веб-сервис? –

+0

Определите «как веб-сервис». Как осуществляется доступ к контроллеру? Вы можете отправить ответ перенаправления, но если этот ответ не соответствует стандартным запросам веб-браузера, он, вероятно, будет проигнорирован. – David

ответ

92

Используйте метод Redirect() контроллера.

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

Update

Вы не можете непосредственно выполнять на стороне сервера перенаправления из АЯКС ответа. Однако вы могли бы вернуть JsonResult с новым URL-адресом и выполнить перенаправление с помощью javascript.

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

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

Я был слишком счастлив. все еще не работает. Я называю это из ajax POST. –

+0

Вы пытаетесь перенаправить всю страницу или просто ответ ajax? – jrummell

+0

вся страница. Есть идеи? –

8

Попробуйте это:

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

Обратите внимание, что вы не можете использовать «www.website.com» - вы должны предоставить синтаксис http: // или https: // – markthewizard1234

+1

Спасибо @ markthewizard1234 среди всех ответов, просмотренных вами, ваша заметка была единственной вещью, которая установила его прямо для меня. Я не думал об этом, так как я использовал динамическое перенаправление на сайты интрасети. – LuqJensen