Як перенаправити на зовнішню URL-адресу з контролера c #


78

Я використовую контролер змінного струму як веб-сервіс.

У ньому я хочу перенаправити користувача на зовнішню URL-адресу.

Як це зробити?

Спробував:

System.Web.HttpContext.Current.Response.Redirect

але це не спрацювало.


Я не думаю, що ви можете це зробити - це порушення міждоменної безпеки.
Брайан Дрісколл

Як споживачі споживають веб-сервіс?
Kirk Woll,

Визначте "як веб-сервіс". Як здійснюється доступ до дії контролера? Ви можете надіслати відповідь на переадресацію, але якщо ця відповідь не буде спрямована на стандартний запит веб-браузера, вона, мабуть, буде проігнорована.
Девід

1
@EladBenda: Я не впевнений, що насправді означає помилка 324. Я підозрюю, що переспрямування JavaScript також повинно містити http://сегмент URL-адреси.
Девід

Відповіді:


137

Використовуйте метод перенаправлення контролера () .

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

Оновлення

Ви не можете безпосередньо виконати переспрямування на стороні сервера з відповіді ajax. Однак ви можете повернути JsonResult з новою URL-адресою та виконати переспрямування за допомогою 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?
jrummell

чи справді є спосіб створити анонімний тип, як ви це робили? (нова {url: " example.com "})
Елад Бенда,

Неправильний синтаксис, вибачте. Це повинно бути new {url = "example.com"}.
jrummell

1
@dipievil javascript має бути розміщений на ваш погляд.
jrummell

14

Спробуйте це:

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

4
зауважте, ви не можете використовувати "www.website.com" - ви повинні надати синтаксис http: // або https: //
markthewizard1234

2
Дякую @ markthewizard1234 серед усіх відповідей, які я переглянув, ваша нотатка - це одне, що поставило це прямо для мене. Я не замислювався, оскільки використовував динамічне переспрямування на сайти інтрамережі.
LuqJensen

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.