2013-08-01 16 views
8

我想嘗試使用Azure,並嘗試使用緩存功能。我創建了一個雲服務項目並添加了一個Cache worker角色和一個Web角色。我將「Windows Azure緩存」nuget安裝到兩個角色的項目中,並在Web角色的web.config中的DataCacheClients元素中將緩存輔助角色的名稱添加爲標識符。使用Windows Azure緩存時發生異常:未知此類主機

我下面的代碼添加到Web角色:

DataCacheFactory cf = new DataCacheFactory(); 
DataCache c = cf.GetDefaultCache(); 

當我嘗試在模擬器上本地運行,我得到以下異常:

ErrorCode<ERRCA0017>:SubStatus<ES0006>:There is a temporary failure. 
    Please retry later. (One or more specified cache servers are unavailable, 
which could be caused by busy network or servers. For on-premises cache clusters, 
also verify the following conditions. Ensure that security permission has been granted 
for this client account, and check that the AppFabric Caching Service is allowed through 
the firewall on all cache hosts. Also the MaxBufferSize on the server must be greater 
than or equal to the serialized object size sent from the client.). 
Additional Information : The client was trying to communicate with the server: net.tcp://MvcWebRole1:24233. 


Inner Exception : No such host is known 

能否請你告訴我我在這裏錯過了什麼?

使用Azure SDK:v2.0

+0

不幸的是,這個問題的時間對我也有好處。 :-) –

回答

14

您的問題的時機不能再好了。我們也遇到了完全相同的問題,並且對於問題可能是什麼而頭疼。我們有一個項目,一切工作都很好,而且我們也遇到了同樣的錯誤。基於我們的研究,我們發現了用於緩存的Nuget包的問題。它似乎是昨天發佈的新版本(2.1.0.0),我們發現如果我們安裝該軟件包,就會出現此錯誤。你可以在你的情況下檢查包裝版本嗎?該文檔指出,這個新版本只能用於今天發佈的最新SDK(2.1)。

一個解決方案是卸載2.1.0.0版本並安裝2.0.0.0版本。要安裝版本2.0.0.0,打開包管理器控制檯(View --> Other Windows --> Package Manager Console),鍵入以下命令有:

Install-Package Microsoft.WindowsAzure.Caching -Version 2.0.0.0 

這種固定我們的問題。希望它也能解決你的問題。

+0

而且你的答案時間也不會更好。它解決了我的問題。謝謝。 –

+0

哇!我能說什麼......謝謝你 – Aadith

+0

我很好奇你是如何找出根本原因的......我花了幾個小時來解決問題,但無濟於事......共享調試技術來識別這些問題會有很大的幫助 – Aadith

1

此異常也可以在計算模擬器中,如果在客戶端庫配置中的作用沒有配置的緩存發生。在我的情況下,這是故意發生的,因爲緩存模擬器有一些問題,可能會降低服務的測試和調試速度。

在以前版本的Windows Azure緩存中,在這種情況下,DataCacheFactory的構造會失敗併產生異常(由我的代碼處理);在這種情況下,使用Windows Azure Caching 2.1(和Azure SDK 2.1)時,代碼會將角色名稱視爲服務器地址,因此構建將嘗試與非現有緩存進行通信 - 這會導致3分鐘的等待並導致問題中報告的例外情況。

我已更改我的代碼以檢測此情況的新情況 - 您可以在this SO question中找到更多詳細信息。