1

次のようにCompanyと呼ばれる 1 つのパラメーターを (クエリ文字列を介して) 受け入れる outputcaching (Employees.aspx と呼びましょう) を含むページがあるとします。

http://www.example.com/Employees.aspx?Company=Google

次のように大文字と小文字が異なる URL のページ キャッシュ エントリの重複を避けるにはどうすればよいですか。

http://www.example.com/Employees.aspx?Company=GOOGLE
http://www.example.com/Employees.aspx?Company=GOoGlE

次のように、OuputCaching ディレクティブを使用して出力キャッシュを有効にしました。

<%@ OutputCache Duration="300" VaryByParam="Company"  %>

この特定のリクエストの「一意のキャッシュキー」をプログラムで設定する方法はありますか

4

1 に答える 1

3

それを行うハック風の方法の 1 つは、(VaryByParam の代わりに) VaryByCustom を実行し、そこで .ToLower/.ToUpper を実行することです。

OutputCache ディレクティブを次のように変更します。

<%@ OutputCache Duration="300" VaryByCustom="Company" VaryByParam="none" %>

...そして、GetVaryByCustomString の Global.asax.cs にオーバーライドを追加します。

public override string GetVaryByCustomString(System.Web.HttpContext context, string custom)
{
    string CustomValue = "";
    switch (custom.ToLower())
    {
        case "company":
            CustomValue = context.Request.QueryString["company"] ?? "";
            CustomValue = CustomValue.ToLower();
            break;
    }
    return CustomValue;
}
于 2009-01-13T16:15:20.303 に答える