You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决C#创建Azure Cognitive Service资源时返回Forbidden错误的问题

报错原因与解决步骤

你遇到的Forbidden报错核心是身份凭据没有足够权限执行认知服务资源创建操作,按以下步骤排查修复即可:

1 检查服务主体权限

你用于创建资源的服务主体,必须在目标资源组/订阅下拥有至少认知服务参与者或更高的「参与者」角色权限:

  • 进入Azure门户,打开对应订阅/目标资源组的「访问控制(IAM)」页
  • 点击「角色分配」,搜索你的服务主体名称,确认权限配置正确
  • 如果没有对应权限,让订阅管理员为你添加角色分配

2 确认订阅已注册认知服务资源提供程序

未注册Microsoft.CognitiveServices资源提供程序也会触发403错误:

  • 进入Azure门户订阅页,左侧菜单找到「资源提供程序」
  • 搜索Microsoft.CognitiveServices,若状态为未注册,点击「注册」,等待注册完成即可
  • 也可以通过Azure CLI执行命令完成注册:az provider register --namespace Microsoft.CognitiveServices

3 验证创建参数合法性

你当前使用的v7.0.0版本NuGet包对参数校验比较严格,需确认以下参数正确:

  • kind参数必须和你要创建的认知服务类型匹配,例如文本分析是TextAnalytics、计算机视觉是ComputerVision,非法的kind值会触发权限类报错
  • sku参数需要和kind匹配,例如F0免费层、S0标准层,不存在的SKU会创建失败
  • 你指定的location区域必须支持对应kind的认知服务,部分区域不支持特定服务类型

4 修正后的代码示例

// 初始化凭据
var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
    ServicePrincipalApplicationId, 
    ServicePrincipalSecret, 
    TenantId, 
    AzureEnvironment.AzureGlobalCloud);

// 初始化认知服务管理客户端,显式指定管理端地址避免默认配置错误
var client = new CognitiveServicesManagementClient(new Uri("https://management.azure.com/"), credentials)
{
    SubscriptionId = SubscriptionId
};

// 构造创建参数
var properties = new CognitiveServicesAccountProperties(customSubDomainName: model.SubDomain);
var sku = new Sku(accountTier);
var parameters = new CognitiveServicesAccount(
    location: location,
    sku: sku,
    kind: kind,
    properties: properties);
parameters.Validate();

// 优先使用异步创建方法,避免同步方法的潜在适配问题
var result = await client.Accounts.CreateAsync(ResourceGroupName, resourceName, parameters);

内容的提问来源于stack exchange,提问作者user3079834

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:15:03