2010-09-21 100 views
1

我們有一個通過HTTPS從IIS網站提供的WCF點擊一次安裝應用程序。它位於另一個具有身份驗證(混合模式,窗口和窗體)但不應用於此文件夾的站點的子目錄中。它還配置了持續時間非常長的靜態緩存,這導致我們遇到了WCF應用程序問題,因此我們禁用了該對象中的緩存,並且突然間setup.exe停止正常工作(如果您直接訪問它的工作應用程序) 。停止緩存可防止安裝clickonce安裝程序?

我們發現一個變通,創下了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 ...

編輯:我想弄清楚這一點,我知道有沒有真的沒有辦法進行全面診斷這個。我很高興地接受,可能導致影響描述,因爲我不認爲我能生產就算我想這個效果的任何合理的解釋......

回答

1

你提到的這個問題是不是在你的分期看到環境。您的登臺環境是否有可能影響文件緩存的其他代理差異?

您可能會看到這種情況的一個可能原因是,如果ClickOnce在HTTP響應中使用緩存控制標頭,然後確定應該如何緩存與ClickOnce應用程序關聯的應用程序和其他文件。你的第一個配置告訴客戶端不要緩存文件。這違背了ClickOnce想要做的事情。通過允許文件被緩存 - 即使是5秒鐘 - 您允許ClickOnce將文件保存在本地,然後從此點開始,ClickOnce的緩存邏輯用於確定是否需要更新。

+0

不,有臨時的/ dev服務器之間沒有代理的差異。它們位於同一個數據中心並通過完全相同的客戶機連接。我想過緩存的事情,這也是我可以提出的最好的解釋,但我不明白爲什麼它會在生產中100%可靠地重現,但在分期中工作正常(這是令人討厭的原因,因爲我不能真正打破生產只是爲了調試它:P) – fyjham 2010-10-04 23:29:22

1

周圍的工作似乎reasonible但如果我想了解更多我想輪廓的ClickOnce安裝與FileMon和看看它的運行依賴關係。我猜測它會假設文件將被保存在客戶端的緩存中,並且找不到它們。

+0

好主意在FileMon。懷疑我可以說服他們讓我打破生產試試看,因爲我不能在任何其他環境中重現它,並且解決方法正在工作,但是如果我再次在環境中看到它,我實際上可以調試我肯定會給那一槍。 – fyjham 2010-10-04 23:34:08