2

私は問題を理解するために丸一日を費やしましたが、できませんでした: ここに問題があります: アクションで私は出力キャッシュ属性を持っています:

[OutputCache(Duration = 600, VaryByParam = "*", VaryByCustom = "User")]

また、次のように Global.asax を書き直しました。

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "User")
    {
        return "User=" + context.User.Identity.Name;
    }

    return base.GetVaryByCustomString(context, arg);
}

しかし、最初にログインすると値がキャッシュされ、ログアウトして別のユーザーとして再度ログインしようとすると、以前にキャッシュされた値が表示されます。デバッグ中に、Identity.Name が最初のユーザーに対して正しい結果を返すことを確認しました。これは、2 番目のユーザーに対しては「admin」であり、「kate」です。

4

1 に答える 1

12

私は答えを見つけました。Location = OutputCacheLocation.Server、別のケースでは、クライアント側にキャッシュする必要がありましたが、これは間違っています。

したがって、outputcache 属性は次のようになります。

[OutputCache(Duration = 600, VaryByParam = "*", VaryByCustom = "User", Location = OutputCacheLocation.Server)]
public ActionResult Index(<my parameters>)
于 2013-09-03T09:37:42.277 に答える