3

最初のユーザーがログインして自分のプロファイルを開いてログアウトすると、Web アプリケーションがあります。
最初のユーザーをログアウトした後に同じコンピューターに2番目のユーザーがログインし、プロファイルを開くと、最初のユーザープロファイルが表示されます。2 番目のユーザーはページを更新する必要があります。
これを防ぐ方法、私は使用しました

 [OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")]
 public ActionResult profile()
 {
    usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid);
    return View(user );
 }


私がそれを解決するのを手伝ってください

4

2 に答える 2

4

OutputCacheアクション メソッドから属性を削除すると機能しますか?

//[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")]
public ActionResult profile()
{
   usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid);
   return View(user );
}

その場合は、2 つの手順でこれを解決できるはずです。まず、これを Global.asax ファイルに入れます。

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    return "User".Equals(custom, StringComparison.OrdinalIgnoreCase)
        ? User.Identity.Name
        : base.GetVaryByCustomString(context, custom);
}

その後、OutputCacheアクションで次の属性を使用できます。

[OutputCache(NoStore = true, Duration = 60, VaryByCustom = "User")]
public ActionResult profile()
{
   usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid);
   return View(user );
}
于 2013-03-24T13:51:20.443 に答える
0

必要なのは、OutputCache の場所を Client に設定することだけです。これにより、パーソナライズされたデータがブラウザーにキャッシュされ、すべてのユーザーが独自のキャッシュを取得します。

[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*", Location=OutputCacheLocation.Client)]
public ActionResult profile()
{
    usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid);
    return View(user );
}

これを参照してください: 出力キャッシュによるパフォーマンスの向上 (C#)

于 2016-12-08T07:52:24.023 に答える