Azure缓存 - 升级到SDK 2.1和缓存2.1后失败

时间:2013-08-31 19:44:21

标签: caching azure

看起来这个话题已经有很多问题,但我相信我的可能会有所不同。我的设置:

  • 1 Azure缓存工作者角色
  • 1 Web角色

直到大约一周前,它们一直存在,直到我尝试升级到Azure缓存2.1。一旦我这样做,我就受到了“没有这样的主机已知”问题的困扰,似乎已经影响了许多开发人员。我发现许多问题和网站指示我将Azure SDK安装升级到新的2.1版本。我做了所有这些事情:

  • 安装最新的Azure SDK 2.1
  • 卸载Azure SDK 2.0
  • 卸载并重新安装Azure Caching 2.1
  • 对我的所有缓存设置进行三重检查配置
  • 三次检查所有引用是否指向最新版本而不是旧版本
  • 右键单击,转到“属性”,然后单击“升级”
  • ,将我的Azure项目升级到2.1

我仍然收到以下信息(我的错误):

Exception type: SocketException 
Exception message: No such host is known
at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)

这与大多数其他问题和网站显示的更典型的错误不同,这是(更常见的报告错误,而不是我的):

No such host is known 
Exception message: No such host is known
at Microsoft.ApplicationServer.Caching.AsyncResultNoResult.EndInvoke()

我对此进行故障排除大约需要30个小时,并且可以真正使用一些帮助。也许我只是错过了关于升级SDK的一些步骤?不知何故可能偷偷摸摸它还在使用旧版本的DLL?除了查看项目中每个引用的路径(我已经完成了,它们都匹配)之外,还有一些简单的方法来检查这个吗?

2 个答案:

答案 0 :(得分:2)

不是答案,而是一些可能有助于您诊断问题的评论:

  • Visual Studio 2012 / Update 3 - 请确保您已将最新更新应用于VS.我们遇到了类似的问题,这是帮助我们的事情之一。
  • 收集大量缓存诊断数据 - 在缓存配置部分中,将缓存工作者角色配置部分中的Microsoft.WindowsAzure.Plugins.Caching.DiagnosticLevel值更改为4。执行此操作后,在缓存工作者角色的OnStart()方法中添加以下代码行:

    DiagnosticMonitorConfiguration dmConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
    
    // Configure the collection of cache diagnostic data.
    CacheDiagnostics.ConfigureDiagnostics(dmConfig);
    
    DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString",
        dmConfig);
    
    return base.OnStart();
    

希望这可以让您了解到底发生了什么。

答案 1 :(得分:0)

这也不是您问题的直接答案,但我认为解决您的情况可能会有所帮助。

当我在计算机模拟器中运行托管服务并且有意禁用缓存时,我遇到了这个例外 - 在以前版本的Windows Azure缓存中,DataCacheFactory构建会抛出异常,我会正确处理它,而对于版本2.1(和Azure SDK 2.1),DataCacheFactory的构造没有错误,但是在你提到的异常被抛出之前我已经被卡住了DataCache构造了3分钟。 / p>

我已经使用了Gaurav Mantri在his answer中描述的过程,并且我已经发现在以前版本的Windows Azure缓存中DataCacheFactory如果缓存角色是在csdef中找不到,而在2.1中它会将缓存角色名称视为网络中的地址 - 从而导致3分钟的等待和随后的异常。

因此我调整了我的代码以检测这种新行为 - 有关详细信息,请参阅this SO question