使用ArmClient删除Azure BotService时返回版本无效错误
问题描述
使用ARM客户端删除Azure Bot服务时收到错误提示:version 2023-09-15-preview is invalid,涉事代码如下:
var resourceGroupId = "ResourceGroupId"; var azureBotName = "BotName"; var armClient = new ArmClient(new DefaultAzureCredential()); var resourceGroup = armClient.GetResourceGroupResource(resourceGroupId); var bot = await resourceGroup.GetGenericResourcesAsync($"resourceType eq 'Microsoft.BotService/botServices' and name eq '{azureBotName}'"); bot.First().DeleteAsync(WaitUntil.Completed);
代码未做任何修改,此前可正常删除Bot服务,近期出现该错误。
问题原因
该错误源于GetGenericResourcesAsync方法默认使用的2023-09-15-preview预览版API已被Azure官方下线或不再支持。泛型资源查询不会自动适配目标资源的最新稳定API版本,而是依赖SDK内置的默认版本,当这个默认版本失效时就会触发错误。
解决方案
1. 使用Bot服务专用资源类型(推荐)
放弃泛型查询,直接获取BotServiceResource实例,SDK会自动使用对应资源的稳定版API:
var resourceGroupId = "ResourceGroupId"; var azureBotName = "BotName"; var armClient = new ArmClient(new DefaultAzureCredential()); var resourceGroup = armClient.GetResourceGroupResource(resourceGroupId); // 获取Bot服务专用资源 var botService = resourceGroup.GetBotServiceResource(azureBotName); // 执行删除 await botService.DeleteAsync(WaitUntil.Completed);
2. 手动指定有效稳定版API(泛型方法兼容方案)
若必须使用泛型查询,手动指定Azure Bot服务支持的稳定版API版本(如2022-09-15):
var resourceGroupId = "ResourceGroupId"; var azureBotName = "BotName"; var armClient = new ArmClient(new DefaultAzureCredential()); var resourceGroup = armClient.GetResourceGroupResource(resourceGroupId); // 指定稳定版API版本 var bot = await resourceGroup.GetGenericResourcesAsync( filter: $"resourceType eq 'Microsoft.BotService/botServices' and name eq '{azureBotName}'", apiVersion: "2022-09-15"); await bot.First().DeleteAsync(WaitUntil.Completed);
3. 更新Azure .NET SDK版本
确保项目中Azure.ResourceManager.BotService NuGet包为最新稳定版,旧版本SDK可能内置已失效的预览版API默认值,更新后会自动适配最新有效版本。
内容的提问来源于stack exchange,提问作者Nick Murphy
相关产品推荐
相关产品推荐

