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

使用.NET Core MVC嵌入Power BI遇Unauthorized错误求助

解决Power BI嵌入时的Unauthorized错误

错误信息

Error Details: Operation returned an invalid status code 'Unauthorized' 
Microsoft.PowerBI.Api.ReportsOperations.GetReportInGroupWithHttpMessagesAsync(Guid groupId, Guid reportId, Dictionary<string, List<string>> customHeaders, CancellationToken cancellationToken) 
Microsoft.PowerBI.Api.ReportsOperationsExtensions.GetReportInGroupAsync(IReportsOperations operations, Guid groupId, Guid reportId, CancellationToken cancellationToken) 
testProjec.Services.PowerBiServiceApi.GetReport(Guid WorkspaceId, Guid ReportId) in PowerBiServiceApi.cs + var report = await pbiClient.Reports.GetReportInGroupAsync(WorkspaceId, ReportId); 
testProjec.Controllers.HomeController.Embed() in HomeController.cs + var viewModel = await powerBiServiceApi.GetReport(workspaceId, reportId);

排查步骤

1. 确认服务主体的工作区权限

  • 确保用于嵌入的服务主体(或身份)已添加到目标Power BI工作区,角色至少为成员(满足只读嵌入需求),若需编辑权限则需设置为管理员角色。
  • 登录Power BI管理员门户,检查租户核心设置:
    • 进入租户设置 > 开发者设置
    • 启用允许服务主体使用Power BI API和允许服务主体创建和使用嵌入容量选项

2. 验证认证凭据准确性

  • 核对获取Power BI访问令牌所用的客户端ID、客户端密钥、租户ID,确保无拼写错误或多余空格。
  • 确认令牌获取逻辑的资源和权限范围正确:
    • 资源URL必须为https://analysis.windows.net/powerbi/api
    • 权限范围应为https://analysis.windows.net/powerbi/api/.default
  • 可通过Postman手动调用Azure AD令牌端点获取令牌,再用该令牌调用Power BI的Get Report In Group REST接口,排查是否为代码逻辑问题。

3. 检查工作区与报表ID的正确性

  • 确认传入GetReportInGroupAsync的WorkspaceId和ReportId是正确的GUID:
    • 工作区ID可从Power BI服务的工作区URL中提取(格式:https://app.powerbi.com/groups/{WorkspaceId}/...)
    • 报表ID可从报表的URL中提取(格式:https://app.powerbi.com/groups/{WorkspaceId}/reports/{ReportId}/...)

4. 匹配嵌入模式与容量配置

  • 若使用用户拥有的数据模式:确保报表所在工作区部署在Premium容量(EM/P SKU)或嵌入容量(A SKU),免费容量不支持嵌入功能。
  • 若使用应用拥有的数据模式:确认服务主体拥有报表所在工作区的权限,且容量配置符合要求。

5. 检查Azure AD应用的API权限

  • 在Azure AD门户的应用注册中,已添加Power BI Service的应用权限(服务主体需使用应用权限而非委派权限),且已完成管理员同意操作。
  • 至少需添加Report.Read.All或Report.ReadWrite.All权限(根据业务需求选择)。

6. 排查代码中的认证逻辑

  • 确保PowerBIClient实例使用有效的访问令牌初始化,且令牌未过期(Azure AD令牌默认有效期1小时,需确保每次调用前能获取最新令牌)。
  • 检查代码中是否存在自定义HTTP头干扰认证流程,避免错误添加额外的认证相关头信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:32:51