2013-02-20 55 views
8

我在使用Windows Azure緩存與模擬器(即在本地而非雲上)時遇到問題。調試時的Windows Azure緩存 - 請求超時

我的系統配置是:

  • 的Windows 8
  • 的Visual Studio 2012更新1
  • Azure的SDK和模擬器1.8
  • 的Windows Azure緩存1.8.1
  • 的Web API
  • .NET 4.5

問題是:我們的服務器利用(在角色中)用於會話管理的Windows Azure緩存等。一旦服務器獲取來自客戶端的請求,它就開始與Windows Azure緩存進行通信,以便放置/獲取一些對象(例如會話對象) 。然後發生「超時」異常(Microsoft.ApplicationServer.Caching.DataCacheException)並且服務器無響應,在Visual Studio的輸出日誌中顯示以下消息。

... 
iisexpress.exe Error: 0 : ERROR: <DistributedCache.RoutingClient> 25cb6980-94c5-4e72- adee-cd58defff7fe:SendMsgAndWait: Request TimedOut, msgId = 77 

A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll 

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll' 
iisexpress.exe Error: 0 : The thread '<No Name>' (0x16d0) has exited with code 0 (0x0). 

The thread '<No Name>' (0x1a00) has exited with code 0 (0x0). 
The thread '<No Name>' (0x2298) has exited with code 0 (0x0). 

ERROR: <DistributedCache.RoutingClient> e91ff46b-870c-4d83-8eef-6bdb718baab9:SendMsgAndWait: Request TimedOut, msgId = 78 

iisexpress.exe Warning: 0 : Microsoft.WindowsAzure.ServiceRuntime Verbose: 500 : Role instance status check starting 

Microsoft.WindowsAzure.ServiceRuntime Verbose: 502 : Role instance status check succeeded: Ready 

WARNING: <SimpleSendReceiveModule> DeadServerCallback Called, Server URI: [net.tcp://127.255.0.0:20004], Underlying exception - 

A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll 

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> DeadServerCallback Called, Server URI: [net.tcp://127.255.0.0:20004], Underlying exception - 

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> DeadServerCallback: Matches My Server, Cleaning Pending Requests 

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> 48c1dd7f-f54d-40a8-9990-25af48b91eb1:Request - 79, result - Status=SendFailed[System.Net.Sockets.SocketException (0x80004005): An existing connection was forcibly closed by the remote host 

    at System.Net.Sockets.Socket.Send(IList`1 buffers) 

    at Microsoft.ApplicationServer.Caching.TcpSocketChannel.Send(IList`1 buffers, TimeSpan timeout)] 

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> DeadServerCallback: Matches My Server, Cleaning Pending Requests 

A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll 

iisexpress.exe Warning: 0 : WARNING: <DistributedCache.SocketClientChannel.1> Request 81 to host net.tcp://127.255.0.0:20004/ failed Status=ChannelOpening 

iisexpress.exe Warning: 0 : WARNING: <DistributedCache.SocketClientChannel.1> Request 80 to host net.tcp://127.255.0.0:20004/ failed Status=ChannelOpening 

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> 8ec8ff74-1f04-49da-8ff5-529d0697542f:Request - 81, result - Status=ChannelOpening 

iisexpress.exe Warning: 0 : A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll 

當這種情況發生時,服務器剛剛關閉(即正在運行,但沒有響應)。

任何想法爲什麼發生這種情況?它與Windows 8有關嗎?

感謝,

回答

1

我也有這個問題,追查下來的Hyper-V虛擬以太網適配器一臺機器上。禁用我安裝的兩個適配器修復了Azure緩存中的超時錯誤。在這臺機器上,我可以繼續保持連接到網絡/互聯網。

在另一臺機器上沒有安裝Hyper-V,並且禁用以太網適配器(斷開與互聯網的連接)「修復」了問題。所以要運行我的應用程序,我必須首先每次斷開與網絡的連接。

在這兩臺機器上,對緩存服務器(例如127.255.0.0,127.255.0.1,127.255.0.2等)進行IP查找時,Azure緩存開發似乎遇到問題,它適用於幾個請求,然後開始超時。從網絡斷開時,它始終有效。

在開始發生問題之前的幾個月,這對我而言在Windows 8機器上工作得很好。

更新

沖洗固定這對我來說DNS緩存,現在它的工作原理,同時連接到網絡。 ipconfig /flushdns

+1

感謝您分享您的經驗! :) – soleiljy 2013-10-02 23:05:16

0

我還沒有能夠完全確認這一點,但這個問題似乎與在azure緩存dll中的遺留協議有關。

我能夠在我的默認緩存運行此配置來解決這個問題:

<dataCacheClient name="default" isCompressionEnabled="false" maxConnectionsToServer="4" useLegacyProtocol="false" > 

希望這有助於