与 PowerBI 集成:GetDashboardsInGroupAsync 或 GetReportsInGroupAsync returns NotFound
Integration with PowerBI: GetDashboardsInGroupAsync or GetReportsInGroupAsync returns NotFound
我正在尝试通过 api 从 PowerBI 检索仪表板和报告列表。在我的 中,我与 api 的连接有问题。我修好了。
我正在使用 Microsoft for PowerBI 的最新软件包。
现在,我正在尝试使用以下代码获取特定组中的仪表板或报告列表:
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
}
我从 URL
中获取 groupId
我得到的是一个错误
Microsoft.Rest.HttpOperationException: Operation returned an invalid status code 'NotFound'
然后,我以为是配置错误。然后,我尝试从 Microsoft 文档中获取列表,并收到了仪表板或报告的列表。
此外,我尝试从 GitHub 下载 Microsoft 示例,但在快速设置后,我遇到了类似的错误。我 运行 的项目是 DotNetCorePaaS。
在 Active Directory 中,为 Power BI 服务启用 API 权限。
获取仪表板和报告的正确方法是什么?
更新
我在 PowerBI 的管理门户中查看了这些值。
此外,我正在 Microsoft documentation, 上阅读这篇文章,但我没有“工作区访问”选项。下图来自微软文档:
这是我的(我不是管理员)
第二次更新
管理员在 PowerBI 中添加了应用程序以拥有服务主体。当我尝试从我的 Web 应用程序读取组或工作区列表时,我仍然收到错误。
然后我尝试 运行 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;
}
如果我 运行 来自 Microsoft 文档的相同查询,我会得到我的结果。
应用调用的URL是
如果我检查 URL 与 PowerBI 是否相似,或者至少 WorkspaceId
和 ReportId
相同
然后,我尝试使用以下代码直接访问报告:
var rsp = await client.Reports.GetReportAsync(
new Guid("ddfb8877-932e-48d0-9f69-f96e5236504b"));
在这种情况下,我收到 Forbidden
错误。
我最后检查的是 PowerBI 生成的报告 link。除了参数cid
,groupId 和reportId 是我期望的。
PS:我刚刚在“为 Power BI 注册您的应用程序”的末尾注意到这段文字:
Note: An application registered here can’t be used as a service principal. Learn how to register a service principal
但是在另一个 Microsoft 文档中,我可以看到这条重要消息:
If you enable service principals to be used with Power BI, the Azure Active Directory permissions don't take effect anymore. The permissions are managed through the Power BI admin portal.
此过程在 Active Directory 中创建了一个新应用程序。我正在使用此应用程序来设置服务主体。我可以这样做还是必须创建一个新应用程序?
上次更新解决方案
在 PowerBI 中,我创建了一个新工作区。有了这个,我可以设置 Workspace access
:在这里我可以从 Active Directory 中找到我的应用程序!代码有效!
问题出在工作区的权限上。我创建了一个新的,现在代码无需任何更改即可运行。
在 post 中,我添加了找到解决方案所遵循的过程。
我正在尝试通过 api 从 PowerBI 检索仪表板和报告列表。在我的
我正在使用 Microsoft for PowerBI 的最新软件包。
现在,我正在尝试使用以下代码获取特定组中的仪表板或报告列表:
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
}
我从 URL
中获取groupId
我得到的是一个错误
Microsoft.Rest.HttpOperationException: Operation returned an invalid status code 'NotFound'
然后,我以为是配置错误。然后,我尝试从 Microsoft 文档中获取列表,并收到了仪表板或报告的列表。
此外,我尝试从 GitHub 下载 Microsoft 示例,但在快速设置后,我遇到了类似的错误。我 运行 的项目是 DotNetCorePaaS。
在 Active Directory 中,为 Power BI 服务启用 API 权限。
获取仪表板和报告的正确方法是什么?
更新
我在 PowerBI 的管理门户中查看了这些值。
此外,我正在 Microsoft documentation, 上阅读这篇文章,但我没有“工作区访问”选项。下图来自微软文档:
这是我的(我不是管理员)
第二次更新
管理员在 PowerBI 中添加了应用程序以拥有服务主体。当我尝试从我的 Web 应用程序读取组或工作区列表时,我仍然收到错误。
然后我尝试 运行 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;
}
如果我 运行 来自 Microsoft 文档的相同查询,我会得到我的结果。
应用调用的URL是
如果我检查 URL 与 PowerBI 是否相似,或者至少 WorkspaceId
和 ReportId
相同
然后,我尝试使用以下代码直接访问报告:
var rsp = await client.Reports.GetReportAsync(
new Guid("ddfb8877-932e-48d0-9f69-f96e5236504b"));
在这种情况下,我收到 Forbidden
错误。
我最后检查的是 PowerBI 生成的报告 link。除了参数cid
,groupId 和reportId 是我期望的。
PS:我刚刚在“为 Power BI 注册您的应用程序”的末尾注意到这段文字:
Note: An application registered here can’t be used as a service principal. Learn how to register a service principal
但是在另一个 Microsoft 文档中,我可以看到这条重要消息:
If you enable service principals to be used with Power BI, the Azure Active Directory permissions don't take effect anymore. The permissions are managed through the Power BI admin portal.
此过程在 Active Directory 中创建了一个新应用程序。我正在使用此应用程序来设置服务主体。我可以这样做还是必须创建一个新应用程序?
上次更新解决方案
在 PowerBI 中,我创建了一个新工作区。有了这个,我可以设置 Workspace access
:在这里我可以从 Active Directory 中找到我的应用程序!代码有效!
问题出在工作区的权限上。我创建了一个新的,现在代码无需任何更改即可运行。
在 post 中,我添加了找到解决方案所遵循的过程。