cloudStorageAccount

本文关键字:cloudStorageAccount | 更新日期: 2023-09-27 18:02:43

在迁移到2.0之前,下面的代码可以工作(类型CloudStorageAccount在名称空间StorageClient中):

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(
    RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));

var roleInstanceDiagnosticManager = cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
    RoleEnvironment.DeploymentId,
    RoleEnvironment.CurrentRoleInstance.Role.Name,
    RoleEnvironment.CurrentRoleInstance.Id);

StorageClient在2.0中被删除了,所以现在我必须使用

Microsoft.WindowsAzure.Storage.CloudStorageAccount

,如果此类型没有CreateRoleInstanceDiagnosticManager方法

那么我怎么能得到CreateRoleInstanceDiagnosticManager返回的实例以前,因为我使用它为我的性能计数器和日志

cloudStorageAccount

它当然看起来有一个变化在2.0和不再像一个扩展方法的行为-这意味着你可能不需要CloudStorageAccount你在顶部,我刚刚遇到这个自己。

试试这个:

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(
                       RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
var roleInstanceDiagnosticManager = CloudAccountDiagnosticMonitorExtensions.CreateRoleInstanceDiagnosticManager(
            RoleEnvironment.GetConfigurationSettingValue(wadConnectionString),
            RoleEnvironment.DeploymentId,
            RoleEnvironment.CurrentRoleInstance.Role.Name,
            RoleEnvironment.CurrentRoleInstance.Id);

首先要做的是包含以下名称空间:

using Microsoft.WindowsAzure.Diagnostics.Management;

然后使用下面的代码:

 CloudStorageAccount cloudStorageAccount =
     cloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue
         (wadConnectionString));
 RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =   
            cloudStorageAccount.CreateRoleInstanceDiagnosticManager
            (RoleEnvironment.DeploymentId,
            RoleEnvironment.CurrentRoleInstance.Role.Name,
            RoleEnvironment.CurrentRoleInstance.Id);

我刚刚用SDK 1.8测试了上面的代码&存储客户端2.0.

它不起作用,因为CreateRoleInstanceDiagnosticManager扩展引用了一个旧的CloudStorageAccount。解决方法是使用DeploymentDiagnosticManager

var storageConnectionString = RoleEnvironment.GetConfigurationSettingValue(
                   "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
var deploymentDiagnosticManager = new DeploymentDiagnosticManager(
                                      storageConnectionString,
                                      RoleEnvironment.DeploymentId);
return deploymentDiagnosticManager.GetRoleInstanceDiagnosticManager(
                        RoleEnvironment.CurrentRoleInstance.Role.Name,
                        RoleEnvironment.CurrentRoleInstance.Id);`

除了Microsoft.WindowsAzure。存储需要引用旧的Microsoft.WindowsAzure。StorageClient,因为AzureDiagnostics引用了该程序集。