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返回的实例以前,因为我使用它为我的性能计数器和日志
它当然看起来有一个变化在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引用了该程序集。