Остановка кэширования мешает установщику clickonce установить? - PullRequest
1 голос
/ 21 сентября 2010

У нас есть приложение WCF для однократной установки, которое обслуживается с веб-сайта IIS через HTTPS. Он находится в подкаталоге другого сайта, который имеет аутентификацию (смешанный режим, как окна, так и форму), но не применяется к этой папке. В нем также настроен статический кэш очень высокой длительности, что вызвало у нас проблемы с нашим приложением WCF, поэтому мы отключили кеширование в этом фолдере, и внезапно setup.exe перестал работать правильно (если вы перешли прямо к .application, он работал) .

Мы нашли обходной путь, похоже, что установка 5-секундного кэша решает проблему, но мне было интересно, если кто-нибудь сможет пролить свет на то, почему это произойдет? Изменения конфигурации, которые исправили это, меняли файл web.config в подпапке с:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="DisableCache" />
    </staticContent>  
 </system.webServer>
</configuration>

Кому:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00.00:00:05" />
    </staticContent>  
 </system.webServer>
</configuration> 

И мы попытались вернуться обратно, и проблема снова появилась, так что это не так просто, как исправление пула приложений. Действительно странно то, что это не происходит с нашей промежуточной средой, единственное отличие состоит в том, что она не обслуживается по протоколу HTTPS ...

Редактировать: Просто чтобы прояснить это, я знаю, что на самом деле нет никакого способа полностью диагностировать это. Я очень рад принять любое рациональное объяснение, которое могло бы вызвать описанный эффект, потому что я не думаю, что смогу произвести этот эффект, даже если бы попытался ...

Ответы [ 2 ]

1 голос
/ 05 октября 2010

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

1 голос
/ 05 октября 2010

Вы упомянули, что эта проблема не видна в вашей промежуточной среде. Возможно ли, что ваша промежуточная среда имеет некоторые другие различия прокси, которые могут повлиять на кэширование файлов?

Одной из возможных причин этого может быть то, что ClickOnce использует заголовки управления кэшем в ответе HTTP, чтобы затем определить, как (или если) следует кэшировать приложение и другие файлы, связанные с приложением ClickOnce. Ваша первая конфигурация говорит клиенту не кэшировать файл. Это идет вразрез с тем, что хочет сделать ClickOnce. Позволяя файлу кэшироваться - даже в течение 5 секунд - вы разрешаете ClickOnce сохранять файл локально, а затем с этого момента логика кэширования ClickOnce используется для определения необходимости обновлений.

...