У меня проблемы с написанным мной сценарием, использующим System. Net .WebClient (вызывается из Powershell, но я думаю, что проблема должна возникать со всем, что использует тот же кэш, что и System. Net .WebRequest ):
Для контекста (поскольку может быть лучшее решение, чем то, что я нашел):
- Я сделал расширение для IE (да, некоторые клиенты все еще используют его) в C# (да, это не рекомендуется, но у меня не было выбора)
- это расширение должно работать с активированным EPM (с низким уровнем привилегий).
- ему нужен файл конфигурации, который доступно на сервере, к которому обращается HTTPS.
- конфигурация должна быть доступна при запуске IE, поэтому мы должны ее кэшировать (также каждая вкладка имеет свой экземпляр расширения)
- эта кэшированная конфигурация должна оставаться в привилегированной папке (расширение вводит код на некоторые страницы в соответствии с этой конфигурацией, поэтому вы не хотите, чтобы пользователь или какой-либо процесс имели доступ для записи в нее) * 10 14 *
Чтобы решить проблему кэширования конфигурации, я написал скрипт Powershell, который запускается через планировщик задач. Скрипт использует System. Net .WebClient для загрузки файла, и я настроил его на кеш файла:
$webclient = New-Object System.Net.WebClient
$cacheLevel = [System.Net.Cache.RequestCacheLevel]::CacheIfAvailable
$webclient.CachePolicy = New-Object System.Net.Cache.RequestCachePolicy($cacheLevel)
Когда я запускаю скрипт с помощью «Запуск от имени администратора», кеш соблюдается (при условии, что сервер правильно настроен).
Когда я запускаю скрипт из планировщика задач (пользователь NT AUTHORITY \ SYSTEM, так как мне нужна привилегия, чтобы иметь возможность сохранять файл в директории установки расширения) , кеш не соблюдается и файл загружается каждый раз.
Есть идеи, как решить эту проблему? Мне нужно кэширование, чтобы можно было опрашивать файл без необходимости полной загрузки (файл небольшой, но количество пользователей велико: D).
Возможно, будет возможно использовать дату файла, который был ранее загружен?