0

asp.net mvc4 を使用します。アプリから ~/Account/LogOff にアクセスできません。デフォルトルートはそれをキャッチし、適切なコントローラーにルーティングする必要があります。routeconfig.cs で

routes.MapRoute(
            name: "Home",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

それはURLをキャッチするべきではありませんか?

リンク作成のコード

 @Html.ActionLink("Signout", "LogOff", "Account" , new{controller = "Account"
 , action = "LogOff"}, new{ target = "_self"})

なぜか気が狂い 打てない

//
    // POST: /Account/LogOff

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        var fam = FederatedAuthentication.WSFederationAuthenticationModule;
        fam.SignOut(false);
        SignOutRequestMessage signOutRequest = new SignOutRequestMessage(new Uri(fam.Issuer), fam.Realm);
        return new RedirectResult(signOutRequest.WriteQueryString());

    }

「ホーム」マップルートの前後にルートを追加してみました。どちらも機能していないようです。ここで何が欠けているのですか?私は何十ものasp.net mvcアプリを書いてきましたが、この問題はありませんでした. それは私の心を吹き飛ばしています。助けてください。

乾杯、~ck

4

3 に答える 3

1

その理由は、あなたが持っているからです[HttpPost]。基本的には、送信ボタンからのリクエストをフォームから取得することを意味しますが、送信ボタンもフォームも使用していないため、ログオフ アクションはスキップされます。

これは、次の 2 つの理由で解決できます。

1.) を に変更し[HttpPost]ます[HttpGet]

2.) リンクをアクションに向けるだけです。

@Html.ActionLink("Signout", "LogOff", "Account")

于 2014-03-17T11:36:40.520 に答える
0

ああ、私はリンクをクリックして取得を行っていました。メソッドは投稿用です。リンクをフォームタグでラップし、リンクをクリックすると、通常どおりフォームを送信します。これで問題が修正され、コントローラーメソッドを実行できるようになりました。

于 2013-03-29T23:31:18.047 に答える
0

[HttpPost]アクションから属性を削除する必要がありますLogOff()@Html.ActionLink()通常のリンク (<a>タグ ) を作成するので、それをクリックすると GET リクエストが発行されます。

于 2013-03-30T01:33:49.800 に答える