2013-05-28 174 views
16

我有共享模式下的Windows Azure網站。防止Azure網站設置WAWebSiteID和ARRAffinity cookies

現在,Azure顯然增加了兩個cookie到我的網站:WAWebSiteIDARRAffinity。 我瞭解到,這些cookie用於啓用Azure負載平衡器後面的應用程序和請求路由功能(ARR)的粘性會話。

儘管如此,我的網站並不需要粘性會話,我不希望有這些cookie。首先,我從來沒有想過粘滯會話的想法,所以我編寫了應用程序,以便在所有前端均勻分佈請求的情況下很好地擴展。事實上,粘滯會話會改變分佈,因爲有客戶做很多請求,客戶幾乎不做任何事情。當只有第一個請求被分配並且來自同一客戶端的後續請求粘在同一臺服務器上時,這對我的應用程序的整體性能有着嚴重的影響。其次,出於數據隱私的原因,我運行一個無cookie的應用程序,任何cookie都被認爲是「邪惡」的。我知道我可以用一點javascript來刪除它們,但我甚至不希望它們傳輸到客戶端。

現在的問題是:如何在服務器端的Azure網站上禁用粘性會話和這兩個cookie?

回答

16

更新

現在,您可以在Web App設置門戶網站將其關閉。您還可以使用資源管理器在這個博客帖子描述:https://blogs.msdn.microsoft.com/appserviceteam/2016/05/16/disable-session-affinity-cookie-arr-cookie-for-azure-web-apps/

原始

我知道這是一個老問題,但似乎在Azure IIS ARR已經更新到3.0版本和除了其他新功能之外,它還具有「會話關閉選擇退出」功能。

本阿里有一篇關於在這裏:​​ http://blogs.technet.com/b/erezs_iis_blog/archive/2013/09/16/new-features-in-arr-application-request-routing-3-0.aspx

短的版本是,你可以添加Arr-Disable-Session-Affinity: True到您的響應頭和粘性會話將被禁用。

最簡單的方法是添加頁眉的web.config文件的customHeaders節點像這樣:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Arr-Disable-Session-Affinity" value="True" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+0

太棒了!我剛剛嘗試過,它實現了(部分)目標:ARRAffinity cookie不會再次設置。儘管如此,我仍然有WAWebSiteSID Cookie存在。現在就看看ARR的資訊。 –

+0

這很棒,但現在我將這個標題發送給客戶端。我不想在我的回覆中輸入cookie和標題。無論如何刪除兩者? – rmac

0

您無法禁用Azure網站的粘性會話。 ARR和粘性會話不適合您或您的應用程序。這些是Azure網站的工作原理的支柱。粘性是將請求路由到您的farm(如果您有多個實例)。

檢查this video以深入瞭解Azure網站。

UPDATE

由於這個答案是先貼有很多更新到Azure的網絡網站應用程序。其中之一是可以選擇退出Affinity Cookie。

查詢Geoff的查詢結果,以便查詢細節!

+0

好吧,看來也的確是沒有辦法解決它。傷心。因此,我必須在每次請求後自行刪除cookie: –

+0

這些cookie與您的應用程序無關,它們只能幫助Azure網站工作。爲什麼要刪除它們? – astaykov

+0

正如我在問題中已經提到的那樣:請求數量在客戶端之間的分配非常不均勻,當客戶端通過ARR在服務器之間平均分配,並且產生非常不均衡的後續請求負載時,這將最終導致一些服務器承受極大的負載,並且有些服務器幾乎無所事事。這不能很好地擴展,所以我絕對需要刪除會話粘性以防止不均衡的負載分配。 –