2015-06-16 70 views
0

一旦您使用並設置了Azure ARRAffinity響應cookie並將其發送回Azure,您是否應該在下次響應時將其恢復?Azures Arr Affinity響應Cookie

我剛剛完成了一小段代碼,它將Azure響應cookie一路帶到瀏覽器,將其設置爲會話cookie,然後在請求中將其作爲cookie傳遞迴Azure。令我驚訝的是我沒有收到這個cookie,我只是第一次看到它。不過,我有一種感覺,這可能是預期的行爲 - 我可以在文檔中找到任何東西。當我嘗試將cookie更改爲某些組合值時,會在下一個響應中返回正確的cookie。

public class RestRequestWithAffinity : RestRequest 
{ 
    public RestRequestWithAffinity(string resource, IRequestWithAffinity request) 
     : base(resource) 
    { 
     if (!string.IsNullOrEmpty(request.AffinityValue)) 
     { 
      AddCookie("ARRAffinity", request.AffinityValue); 
     } 
    } 
} 

var request = new RestRequestWithAffinity(url, feedRequest) 
     { 
      Method = Method.GET 
     }; 

// cookie doesn't come back when already in request 
IRestResponse response = await _client.ExecuteTaskAsync(request); 
+1

你不應該使用手動此cookie干涉。你想達到什麼目的? – astaykov

+0

我通過一系列無狀態微服務傳遞這個cookie,恐怕我確實需要去觸碰它。 – Vojtiik

+1

如果**你**創建cookie,比選擇不同的名稱,一切都會好! ARRAffinity是IIS ARR模塊的保留名稱。這就是爲什麼你可能會看到這種不正當行爲 – astaykov

回答

0

是的,你應該把它帶回下一個響應。你可以採取以下鏈接看看:

http://azure.microsoft.com/blog/2013/11/18/disabling-arrs-instance-affinity-in-windows-azure-web-sites/

+0

我在閱讀文檔之前,並在第一段下的有序列表中說,只有步驟7-9重複隨後的請求。對我來說,這意味着我不應該回頭。 – Vojtiik

+0

「當客戶端提交後續請求時,它包含了cookie中的」這意味着它應該發送cookie的每個請求,在我看來 –

0

如果您創建餅乾,不是選擇一個不同的名字,一切都會好起來的! ARRAffinity是IIS ARR模塊的保留名稱。這就是爲什麼你會看到這種不正當行爲。

另外要注意的是,如果你使用公共微軟提供的域(即yourdomain.cloudapp.net或yourdomain.azurewebsites.net)你不能設置Cookie在頂級域級別 - 即你不能設置cookie的cloudapp.net域或azurewebsites.net域。您應始終使用完整網域,包括任何子網域來設置Cookie - 即yourdomain.azurewebsites.net

採取這裏閱讀有關該問題的更多信息:https://publicsuffix.org/learn/

相關問題