wie man vom c # controller zur externen url umleitet

77

Ich benutze AC # Controller als Web-Service.

Darin möchte ich den Benutzer zu einer externen URL umleiten.

Wie mache ich es?

Versucht:

System.Web.HttpContext.Current.Response.Redirect

aber es hat nicht funktioniert.

Elad Benda
quelle
Ich glaube nicht, dass Sie das tun können - es ist eine domänenübergreifende Sicherheitsverletzung.
Brian Driscoll
Wie nutzen Verbraucher den Webdienst?
Kirk Woll
Definieren Sie "als Webdienst". Wie wird auf die Controller-Aktion zugegriffen? Sie können eine Umleitungsantwort senden, aber wenn diese Antwort nicht an eine Standard-Webbrowser-Anfrage geht, wird sie wahrscheinlich ignoriert.
David
1
@EladBenda: Ich bin nicht sicher, was ein 324-Fehler tatsächlich bedeutet. Ich vermute jedoch, dass eine JavaScript-Umleitung auch das http://Segment der URL enthalten sollte .
David
1
Mögliches Duplikat von .net mvc Weiterleitung an externe URL
KyleMit

Antworten:

137

Verwenden Sie die Redirect () -Methode des Controllers .

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

Aktualisieren

Sie können eine serverseitige Umleitung von einer Ajax-Antwort nicht direkt durchführen. Sie können jedoch ein JsonResult mit der neuen URL zurückgeben und die Umleitung mit Javascript durchführen.

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

$.post("@Url.Action("YourAction")", function(data) {
    window.location = data.url;
});
jrummell
quelle
Ich war zu früh glücklich. funktioniert immer noch nicht. Ich rufe es von Ajax POST an.
Elad Benda
Versuchen Sie, die gesamte Seite oder nur die Ajax-Antwort umzuleiten?
Jrummell
Gibt es wirklich eine Möglichkeit, einen Anonymus-Typ wie Sie zu erstellen? (neu {url: " example.com "})
Elad Benda
Falsche Syntax, sorry. Es sollte sein new {url = "example.com"}.
Jrummell
1
@dipievil das Javascript sollte in Ihrer Ansicht platziert werden.
Jrummell
14

Versuche dies:

return Redirect("http://www.website.com");
Tom Chantler
quelle
4
Beachten Sie, dass Sie "www.website.com" nicht verwenden können - Sie müssen die Syntax http: // oder https: //
angeben
2
Vielen Dank an @ markthewizard1234 unter all den Antworten, die ich gelesen habe. Ihre Notiz war die einzige Sache, die es für mich richtig gemacht hat. Ich habe nicht darüber nachgedacht, da ich eine dynamische Umleitung zu Intranetsites verwendet habe.
LuqJensen