ASP.NET MVCコントローラーから外部URIにリダイレクトする


170

アクションメソッドから外部URLにリダイレクトしようとしていますが、機能しません。誰かが私のエラーにいくつかの光を当てることができますか?

public void ID(string id)
    {
        string url = string.Empty;
        switch (id)
        {
            case "DB2FCB11-579F-4DA2-A68C-A6495B9BAAB5":

                url = "http://www.somesite.com";
                break;
        }
        Response.Redirect(url, true);
    }

ありがとう、クリス


1
あなたのエラーは何ですか?または症状?これはどこに行きますか?
ポールサシック、

回答:


342

ASP.NET MVCの場合は、次を返すコントローラーメソッドが必要です。

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

それ以外の場合は、リダイレクトで発生しているエラーに関する詳細情報が必要です。URLが空でないことを確認するために、ステップスルーします。


5
オプションで、代わりにこれを行うことができます。return new RedirectResult( "yourURL"、true); これはほとんど同じですが、最後に、永続的なリダイレクトかどうかを示すパラメーターを提供します(HTTP 301と他の何か、307
かしら

@ Mr.Pichlerおそらく302ですが、Fiddlerでいつでも確認できます。
Yuriy Faktorovich

1
リダイレクト(RUL)は302であるとRedirectPermanent(URL)が301チェックです:stackoverflow.com/questions/17517318/...
TNT

これをローカルHTMLファイルで機能させることについての考えはありますか?動作しません:> return Redirect( "C:/Users/Me/Documents/test.html");
Steve Eggering

1
@SteveEggeringは、stackoverflow.com
Yuriy Faktorovich

15

JavaScriptの使用

 public ActionResult Index()
 {
    return Content("<script>window.location = 'http://www.example.com';</script>");
 }

注: @Jeremy Ray Brownが言ったように、これは最良のオプションではありませんが、状況によっては役立つ場合があります。

お役に立てれば。


1
このようなものは機能しますが、コントローラーは実行するアクションを決定します。スクリプトを使用する必要はありません。
ジェレミーレイブラウン

6
信じられないかもしれませんが、このアプローチのようなものが役に立ちました。ASP.NET MVC / AngularJSのハイブリッドアプリケーションがあり、多くの古いWebフォームコードがいたるところにあります。Angularルーティングを使用するURLにリダイレクトするようなものを使用しました。AngularルーティングはURLの#マークに従うため、クライアント側でのみ認識されるため、そのようなURLに対してリダイレクトを利用することはできません。
センチメント2016

@TNTはい、あなたは正しいです。私はこれをオプションとして提供しただけで、他の人に役立つかもしれません。
shaijut 2016年

1
@stomが礼儀正しくなかったらごめんなさい。この方法は、Google Analyticsで1回の訪問をカウントするなど、リダイレクトを使用してスクリプトを実行する必要がある場合に使用します。
2016年

これでようやく動作しました。@Yuriyの簡単なリダイレクトソリューションは失敗しました。セキュリティ上の理由から、MVCアプリケーションに向かうリクエストは、プロキシサーバー-Rewrite addin + rewriteルールを備えたIISを介してクロールする必要があります。この組み合わせはおそらくリダイレ​​クトURLに影響します。つまり。私はからリダイレクトしたいときexample.com/actionexample.org/?search=xyz使用して、return Redirect("https://www.example.org/?search=xyz");結果をにリダイレクトされるexample.com/?search=xyz
Kraken101 2017年



-3

これを試してください(私はホームコントローラーとインデックスビューを使用しました):

return RedirectToAction("Index", "Home");

これは外部URIにリダイレクトされず、代わりにHome Controllerのインデックスアクションにリダイレクトされます。
アンソニーポッツ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.