Задайте значение VaryByCustom кэша вывода страницы программно

Я хочу использовать значение Enum для типов параметров VaryByCustom, которые я буду поддерживать, возможно ли это сделать?

Я попытался установить его на самой странице

<%@ OutputCache Duration="600" VaryByParam="none" 
            VaryByCustom='<%=VaryByCustomType.IsAuthenticated.ToString(); %>' %>

Но это вернуло всю буквальную строку "<%=VaryByCustomType.IsAuthenticated.ToString(); %>" внутри моего global.asax. Есть ли способ сделать это либо на самой странице, либо из кода программной части? Или это просто то, что я должен принять, это чисто магические строки, и я ничего не могу сделать, чтобы добавить к ним безопасность типов?


person Chris Marisic    schedule 15.04.2010    source источник


Ответы (1)


Вместо использования директивы @Outputcache попробуйте сделать это с кодом на странице. например

void Page_Init() {
    var outputCacheSettings = new OutputCacheParameters() {
        Duration = 600,
        VaryByCustom = VaryByCustomType.IsAuthenticated.ToString()
    };
    InitOutputCache(outputCacheSettings); 
}
person David Ebbo    schedule 27.04.2010
comment
Это похоже на ответ, который я искал, однако, глядя на msdn.microsoft.com/ en-us/library/ms153473.aspx в примечаниях не использовать этот метод, есть ли у вас какие-либо сведения о том, почему MSDN говорит, что все еще раскрывает этот метод? Или какие последствия это имеет, чтобы вызвать его сам? - person Chris Marisic; 28.04.2010
comment
Откровенно говоря, это устаревшая документация, которая датируется днями 2.0 и никогда не обновлялась. На самом деле это вызов, который генерируется для вас, когда вы используете директиву. В качестве альтернативы вы также можете использовать метод, описанный в этом потоке: to-par" title="программно управлять кэшированием вывода, отключать или включать кэш в соответствии с параметром"> stackoverflow.com/questions/1043112/ - person David Ebbo; 28.04.2010