代码之家  ›  专栏  ›  技术社区  ›  Enrico

与PowerBI集成:GetDashboardSingGroupAsync或GetReportSingGroupAsync返回NotFound

  •  0
  • Enrico  · 技术社区  · 4 年前

    我正在尝试通过PowerBI的api从PowerBI检索仪表板和报表列表。在我的 previous post 我对API的连接有问题。我修好了。

    我使用的是微软最新的PowerBI软件包。

    enter image description here

    if (await CreatePowerBIClient())
    {
        var dashboards = await client.Dashboards.GetDashboardsInGroupAsync(new Guid(SettingsModels.GroupId));
        var reports = await client.Reports.GetReportsInGroupAsync(new Guid(SettingsModels.GroupId));
        
        // doing something else with the list
    }
    

    我抓住了 groupId 从URL

    enter image description here

    我得到的是一个错误

    Microsoft.Rest.HttpOperationException:操作返回无效的状态代码“NotFound”

    enter image description here

    enter image description here

    另外,我还尝试从 GitHub 但经过快速设置,我得到了一个类似的错误。我运行的项目是DotNetCorePaaS。

    enter image description here

    在Active Directory中,为Power BI服务启用API权限。

    enter image description here

    获取仪表板和报表的正确方法是什么?

    更新

    enter image description here

    另外,我在网上读了这篇文章 Microsoft documentation, 但我没有“工作区访问”选项。以下图片来自Microsoft文档:

    enter image description here

    enter image description here

    DotNetCorePaaS 结果我也遇到了同样的情况。另外,我试着看了组的列表,结果是没有组。

    string groupEndPoint = $"https://api.powerbi.com/v1.0/myorg/groups";
    HttpResponseMessage groupApiResponse = embedTokenClient.GetAsync(groupEndPoint).Result;
    if (groupApiResponse.StatusCode == HttpStatusCode.OK)
    {
        string groupContent = groupApiResponse.Content.ReadAsStringAsync().Result;
        JObject groupResponse = JsonConvert.DeserializeObject(groupContent) as JObject;
    }
    

    enter image description here

    如果从Microsoft文档中运行相同的查询,则会得到结果。

    enter image description here

    https://api.powerbi.com/v1.0/myorg/groups/04639c90-832b-4d25-8852-eb5d14313f8d/reports/ddfb8877-932e-48d0-9f69-f96e5236504b

    enter image description here

    如果我用PowerBI检查这个URL是相似的,或者至少 WorkspaceId ReportId 都是一样的

    https://app.powerbi.com/groups/04639c90-832b-4d25-8852-eb5d14313f8d/reports/ddfb8877-932e-48d0-9f69-f96e5236504b/ReportSection

    enter image description here

    var rsp = await client.Reports.GetReportAsync(
                              new Guid("ddfb8877-932e-48d0-9f69-f96e5236504b"));
    

    在这种情况下,我收到 Forbidden 错误。

    enter image description here

    cid ,groupId和reportId是我所期望的。

    https://app.powerbi.com/groups/04639c90-832b-4d25-8852-eb5d14313f8d/reports/ddfb8877-932e-48d0-9f69-f96e5236504b?ctid=0306b564-e855-4e8a-ad57-2cf9b2b3c830

    注意:在此注册的应用程序不能用作服务主体。了解如何注册服务主体

    enter image description here

    如果启用服务主体与Power BI一起使用,那么Azure Active Directory权限将不再生效。权限通过Power BI管理门户进行管理。

    此过程在Active Directory中创建了一个新的应用程序。我正在使用此应用程序设置服务主体。我可以这样做,还是我必须创建一个新的应用程序?

    在PowerBI中,我创建了一个新的工作区。有了这个,我可以设定 Workspace access

    0 回复  |  直到 4 年前
        1
  •  1
  •   Enrico    4 年前

    问题出在工作区的许可上。我创建了一个新的,现在代码没有任何变化。

    在帖子中,我添加了获得解决方案所遵循的过程。