0

В моем .NET-коде у меня есть пользовательский обработчик, который обрабатывает запрос Http и в методе ProcessRequest вызывает настраиваемый HttpModule для установки заголовков Http-кэша.IIS 7.5 заставляет HTTP-заголовок CacheControl приватным

HttpModule устанавливает заголовок в методе PreSendRequestHeaders со следующим кодом

HttpCachePolicy cache = response.Cache; 
if (cache != null) 
{ 
    cache.SetCacheability(HttpCacheability.Public); 
    cache.SetMaxAge(TimeSpan.FromSeconds(varnishDuration)); 
    response.AppendHeader("Edge-control", String.Concat("!no-store, max-age=", akamaiDuration, "s dca=noop")); 
} 

В IIS 7.5, с бассейном в интегрированном режиме, CacheControl вынужден конфиденциальный. Вот что я получил:

curl -IXGET -H "Host:myHostName" "http://myServer/mypage" 
HTTP/1.1 200 OK 
Cache-Control: private 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 4.0.30319 
Edge-control: !no-store, max-age=300s dca=noop 
[...] 

Я не понимаю, почему IIS изменяет CacheControl конфиденциальный.

Вот мой веб-сервер раздел в моем файле web.config:

<pre> 
<system.webServer> 
    <handlers accessPolicy="Read, Script"> 
     <add name="OxygenHandler" verb="*" path="*" type="com.eurosport.oxygen.server.modules.OxygenHandlerFactory, OxygenServerModules" /> 
    </handlers> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="WebServiceCachingModule" type="com.eurosport.toolkit.WebServiceCachingModule, Eurosport.Toolkit" /> 
    </modules> 
    </system.webServer> 
</pre> 

Я пытался добавить SetSlidingExpiration как упомянуто здесь Cache.SetMaxAge not working under IIS, works fine under VS Dev Srv, но это не помогло.

ответ

0

мне удалось получить его работу с помощью следующего кода в моем модуле:

response.Headers.Remove("Cache-Control"); 
response.AppendHeader("Cache-Control", "public, max-age=" + varnishDuration.ToString()+", s-max-age=" + varnishDuration.ToString()); 

Это выглядит грязным, но мне кажется, что Response.CacheControl и response.Cache свойство не используется в IIS в интегрированном режиме (или превышены некоторыми модулями ...)