【问题标题】:Windows Azure - "The configuration file is missing a diagnostic connection string for one or more roles"Windows Azure - “配置文件缺少一个或多个角色的诊断连接字符串”
【发布时间】:2013-07-17 14:31:48
【问题描述】:

Windows Azure 管理管理 门户中,当我尝试监控实例时,我收到以下错误:

The configuration file is missing a diagnostic connection string for one or more roles. Monitoring can't be enabled for these roles.

我的服务中有 2 个角色。

MyApp.Cache 在监控图上工作正常。

MyApp.Website 不显示监控图。 这就是为什么我不认为value="UseDevelopmentStorage=true" 是问题所在。

我的服务配置如下:

<Role name="MyApp.Website">
    <Instances count="2" />
    <ConfigurationSettings>      
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey" />      
    </ConfigurationSettings>
    </Role>
    <Role name="MyApp.Cache">
    <Instances count="2" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.NamedCaches" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.Loglevel" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.CacheSizePercentage" value="" />      
      <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString" value="DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey" />      
    </ConfigurationSettings>
</Role>

我的服务定义是这样的:

<ServiceDefinition name="MyApp.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
  <WebRole name="MyApp.Website" vmsize="ExtraSmall">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
    <LocalResources>
        <LocalStorage name="DiagnosticStore" sizeInMB="4096" cleanOnRoleRecycle="false"/>
    </LocalResources>    
  </WebRole>
  <WorkerRole name="MyApp.Cache" vmsize="ExtraSmall">
    <Imports>
      <Import moduleName="Diagnostics" />
      <Import moduleName="Caching" />
    </Imports>
    <LocalResources>
      <LocalStorage name="Microsoft.WindowsAzure.Plugins.Caching.FileStore" sizeInMB="4096" cleanOnRoleRecycle="false" />
    </LocalResources>
  </WorkerRole>
</ServiceDefinition>

【问题讨论】:

  • 您的 CSDEF 文件是什么样的?
  • @Igorek Igorek,我已经更新了我的问题。
  • 嗯...你是如何部署的?您是否选中复选框以在发布期间使用存储帐户更新诊断连接字符串?
  • @Igorek 是的,我正在检查复选框。问题是错误并不总是出现。
  • 我会尝试替换 DevelopmentStorage 字符串以防万一,以避免可能替换该值问题

标签: azure azure-diagnostics


【解决方案1】:

为了使诊断正常工作,您需要在 .csdef 中导入诊断模块,并在 .cscfg 文件中提供有效的连接字符串。

在您的情况下,您已正确包含诊断模块,但是您没有在 .cscfg 文件中提供有效的连接字符串。您需要将“AccountName”替换为实际的帐户名称,将“AccountKey”替换为有效的帐户密钥。为此,您需要创建一个 Azure 存储帐户并在此处复制其连接字符串。

此外,即使这不是您的问题的一部分,您也不应该在部署解决方案时使用“UseDevelopmentStorage=true”。它基本上使用您的本地存储模拟器作为您的 Azure 存储帐户,这在云中不可用。您还需要在辅助角色中提供有效的存储帐户连接字符串。

【讨论】:

  • 感谢您的回答。不幸的是,当我实施自动缩放器时,Azure 已将自动缩放器包含在他们的管理门户中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多