2011-12-14 6 views
1

Я в середине применения кэширования для нашего корпоративного API. Я пытаюсь получить Cache-Control типа «public, max-age = 600» для совместимости с нашим балансировщиком нагрузки, который поддерживает обратное кэширование прокси.Как достичь «Cache-Control: public, max-age = 600» с использованием AspNetCacheProfile в WCF

Однако я могу получить только WCF для вывода «private, max-age = 600», что неверно для обратного кэширования прокси.

У меня есть следующий профиль, установленный для местоположения: Сервер (так как мне нужно кэширование на уровне ASP-приложений), но я также пробовал все остальные местоположения, но никто не даст мне Public.

<caching> 
    <outputCache enableOutputCache="true"/> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     <add name="CacheDefault" duration="600" varyByParam="none" location="Any" /> 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

Im не используя стандарт WCF, как это, ничего фантазии:

[AspNetCacheProfile("CacheDefault")] 
    [OperationContract] 
    [WebGet(UriTemplate = "/GetData/{value}")] 
    string GetData(string value); 

Я даже начал совершенно новый проект службы WCF только для удаления любых вмешивающихся переменных, которые могут быть в моем текущем коде производства, но он по-прежнему выходит из строя.

P.S. Должно быть, я должен четко указать, что я не пытаюсь переопределить WebOperationContext.current.outgoingresponse.headers вручную. Я после быстрой победы с настройкой AspNetCacheProfile.

Любая помощь будет замечательной!

Большое спасибо!

Oliver

ответ

0

Я столкнулся с различными методами кеширования. Я опубликовал некоторые из них, которые я нашел полезными здесь http://itswadesh.wordpress.com/2011/05/05/caching-in-asp-net/

+0

Извините, но это не подходит для этого сценария. Большое спасибо, Оливер –