В моем приложении используется библиотека с закрытым исходным кодом, которая, в свою очередь, использует WinHTTP для загрузки файлов. Согласно Wireshark, мой (IIS) веб-сервер возвращает нормальный заголовок кеша с этими файлами. Например:
HTTP/1.1 200 OK
Content-Type: text/xml
ETag: "26a699b2b18dd51:0"
Когда я запускаю свое приложение из командной строки, я получаю обычные заголовки кеша в HTTP-запросах:
GET /places.xml HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; wbx 1.0.0; wbxapp 1.0.0)
If-Modified-Since: Mon, 28 Oct 2019 17:04:02 GMT
If-None-Match: "26a699b2b18dd51:0"
Однако, когда я запускаю тот же код в качестве службы, независимо от того, работает ли я как LocalSystem или как моя локальная учетная запись пользователя, запросы выглядят одинаково, за исключением того, что заголовки кеша не предоставляются:
GET /places.xml HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; wbx 1.0.0; wbxapp 1.0.0)
Почему отсутствуют заголовки кеша, когда мое приложение работает как служба как в Windows 10, так и в Windows Server?