2017-01-29 31 views
1

任何人都可以举出使用Microsoft Azure管理库(MAML)来扩展Redis缓存服务的示例吗?Azure Redis,如何在.NET中进行扩展,使用Microsoft Azure管理库(MAML)

我必须使用旧版本的Microsoft.Azure.Management.Redis.dll,v0.9.0.0,因此RedisManagementClient不接收令牌,但只接收凭证。在这种情况下,出现异常

“AuthenticationFailed:Authentication failed。'授权' 标头丢失。”

这里是我使用的代码:

public static void ScaleRedis(eSubscriptionType subscriptionType) 
    { 

      RedisManagementClient client = new RedisManagementClient(AzureCredentials.GetCredentials(subscriptionType)); 


      var redisParams = new RedisCreateOrUpdateParameters() 
      { 
       Properties = new RedisProperties(version, new Sku(redisSKUName, redisSKUFamily, redisSKUCapacity), false), 
       Location = redisCacheRegion 
      }; 
      client.Redis.CreateOrUpdate(resourceGroupName, cacheName, redisParams); 


    } 
+0

我已更新我的回覆。任何疑虑,请让我知道。 –

+0

这似乎是正确的答案,只有与AD的关系对我们来说是新的,现在我们尝试获取clientId和ten​​entId,当我们管理时,我会将其标记为最佳答案。我在代码中看到了一个到Redis访问键的链接,但访问键的使用在哪里?当您连接Azure Redis缓存时,将与端点结合的[access-keys](https://docs.microsoft.com/zh-cn/azure/redis-cache/cache-configure#access-keys)作为连接字符串使用,因此将使用[ –

+0

]与客户端库(例如StackExchange.Redis),你可以参考这个[教程](https://docs.microsoft.com/en-us/azure/redis-cache/cache-dotnet-how-to-use-azure -redis缓存)。 –

回答

1

我必须使用旧版本Microsoft.Azure.Management.Redis.dll,v0.9.0.0,所以RedisManagementClient不接受的道理,但只凭据。

正如我知道,是用来命名Microsoft.Azure.*库调用ARM REST APITokenCloudCredentials,而Microsoft.WindowsAzure.*可以与CertificateCloudCredentials工作。

如果使用MAML与CertificateCloudCredentials管理Redis的缓存,您会收到以下错误信息:

AuthenticationFailed: Authentication failed. The 'Authorization' header is missing.

杠杆Fiddler,可以按如下方式找到详细的错误:

考虑到您使用的是Microsoft.Azure.Management.Redis.dll (v0.9.0),用于管理Redis缓存的代码如下所示:

TokenCloudCredentials tokenCredential = new TokenCloudCredentials("{your-subscriptionId}", "{token}"); 
RedisManagementClient client = new RedisManagementClient(tokenCredential); 
var redisParams = new RedisCreateOrUpdateParameters() 
{ 
    Properties = new RedisProperties(version, new Sku(redisSKUName, redisSKUFamily, redisSKUCapacity)), 
    Location = redisCacheRegion 
}; 
client.Redis.CreateOrUpdate(resourceGroupName, cacheName, redisParams); 

注:

UPDATE

这是我packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.Azure.Management.Redis" version="0.9.0-preview" targetFramework="net45" /> 
    <package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" /> 
    <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" /> 
    <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="3.13.8" targetFramework="net45" /> 
    <package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" /> 
    <package id="Microsoft.WindowsAzure.Common" version="1.3.0" targetFramework="net45" /> 
    <package id="Microsoft.WindowsAzure.Common.Dependencies" version="1.1.0" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" /> 
</packages> 

结果:

1

要缩放使用Microsoft Azure Management Libraries (MAML)您的Azure的Redis的缓存实例,调用 IRedisOperations.CreateOrUpdate方法,并将新的大小为 RedisProperties.SKU.Capacity

static void Main(string[] args) 
{ 
    // For instructions on getting the access token, see 
    // https://azure.microsoft.com/documentation/articles/cache-configure/#access-keys 
    string token = GetAuthorizationHeader(); 

    TokenCloudCredentials creds = new TokenCloudCredentials(subscriptionId,token); 

    RedisManagementClient client = new RedisManagementClient(creds); 
    var redisProperties = new RedisProperties(); 

    // To scale, set a new size for the redisSKUCapacity parameter. 
    redisProperties.Sku = new Sku(redisSKUName,redisSKUFamily,redisSKUCapacity); 
    redisProperties.RedisVersion = redisVersion; 
    var redisParams = new RedisCreateOrUpdateParameters(redisProperties, redisCacheRegion); 
    client.Redis.CreateOrUpdate(resourceGroupName,cacheName, redisParams); 
} 

欲了解更多信息,请参阅Manage Redis Cache using MAML sample

来源:How to Scale Azure Redis Cache # Scale using MAML

+0

我在问题中添加更多信息,以便更具体地使用我正在使用的版本。 –

+0

使用Azure资源管理器或Azure服务管理创建Redis缓存吗?您的nuget版本在2014年发布,并且太旧以致无法支持令牌认证。 – juvchan