gpt4 book ai didi

Azure.ResourceManager.Resources.SubscriptionResources.GetResourceGroups() 返回空

转载 作者:行者123 更新时间:2023-12-03 06:13:31 25 4
gpt4 key购买 nike

对于下面的代码,如果使用 Microsoft.Azure.Management.Search,它将获取搜索服务。如果使用 Azure.ResourceManager.Resources,则不会获取资源组。

public static async Task<string> GetAdminKeysAsync(IAzureCredentialFactory credentialFactory, string subscriptionId, string serviceName, bool useAzureResourceManagerForAdminKeys)
{
if (!useAzureResourceManagerForAdminKeys)
{
var accessToken = credentialFactory.AcquireToken(Common.SystemConstants.Security.AzureManagementEndpoint);
SearchManagementClient searchManagementClient = new SearchManagementClient(new TokenCredentials(accessToken))
{
SubscriptionId = subscriptionId
};
// Service found (see below code GetResourceGroupNameFromServiceName)
string serviceResourceGroupName = GetResourceGroupNameFromServiceName(searchManagementClient, serviceName);
var adminKeys = searchManagementClient.AdminKeys.Get(serviceResourceGroupName, serviceName);
return adminKeys.PrimaryKey;
}
else
{
var tokenCredential = credentialFactory.AcquireTokenCredential(Common.SystemConstants.Security.AzureManagementEndpoint);
var armClient = new ArmClient(tokenCredential, subscriptionId);
var subscription = await armClient.GetDefaultSubscriptionAsync();
// ResourceGroup not found
var resourceGroups = subscription.GetResourceGroups();
foreach (var resourceGroup in resourceGroups)
{
var searchServices = resourceGroup.GetSearchServices();
foreach (var searchService in searchServices)
{
if (searchService.Data.Name.Equals(serviceName))
{
var adminKeys = await searchService.GetAdminKeyAsync();
return adminKeys.Value.PrimaryKey;
}
}
}
throw new InvalidOperationException($"Service name {serviceName} can't be found from subscription {subscriptionId}.");
}
}

public static string GetResourceGroupNameFromServiceName(SearchManagementClient searchManagementClient, string serviceName)
{
// Service found
IPage<SearchService> searchCollection = searchManagementClient.Services.ListBySubscription();
SearchService searchService = searchCollection.SingleOrDefault(azs => azs.Name.Equals(serviceName));
string searchId = searchService.Id;
Match matches = ResourceGroupIdPattern.Match(searchId);
if (matches.Groups.Count < 2)
{
throw new ArgumentException($"Could not find resource group name in {searchId}.");
}
return matches.Groups[1].Value;
}

最佳答案

请尝试更改以下代码行:

foreach (var resourceGroup in resourceGroups)

await foreach (var resourceGroup in resourceGroups.GetAllAsync())

关于Azure.ResourceManager.Resources.SubscriptionResources.GetResourceGroups() 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76503086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com