是否显示没有访问令牌的Power BI报告?

时间:2019-02-13 11:10:23

标签: powerbi powerbi-embedded

亲爱的, 我正在根据用户选择的过滤条件显示PBI报告。为了显示报告,我在C#中使用Microsoft Power BI API。工作正常,但突然开始出现以下错误:

  

您已超出共享容量上可以生成的嵌入令牌数量。您需要购买Azure功能以生成嵌入令牌。参见https://go.microsoft.com/fwlink/?linkid=868976 \

using (var powerBiClient = new PowerBIClient(new Uri(apiUrl), tokenCredentials))
{
   var reports = powerBiClient.Reports.GetReportsInGroupAsync(groupId).GetAwaiter().GetResult();
   var report = reports.Value.FirstOrDefault(rep => rep.Id == reportId);
   var datasets = powerBiClient.Datasets.GetDatasetByIdInGroupAsync(groupId, report.DatasetId).GetAwaiter().GetResult();
   var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
   var tokenResponse = powerBiClient.Reports.GenerateTokenInGroupAsync(groupId, report.Id, generateTokenRequestParameters).GetAwaiter().GetResult();
}

我在最后一行(即GenerateTokenInGroupAsync)出错。为了解决该问题,建议您获取PBI Pro许可证,但就我而言,这是不可能的。有人可以推荐我其他方法来完成工作,而不是发布到Web上并获取嵌入式URL,因为我需要根据用户选择来过滤报告。

我可以访问和显示没有访问令牌的报告,也可以获取没有专业版许可证的令牌吗?

1 个答案:

答案 0 :(得分:1)

这与Pro许可证无关,而与Premium有关。您已经拥有Pro,否则您将无法使用组(工作区),这是Pro的唯一功能(不过,它可能只是试用版)。但是,GenerateTokenInGroup与高级功能有关。如果没有为工作空间分配容量,则只能生成数量有限的令牌。参见Create a dedicated capacity

  

将带有PRO许可证的嵌入令牌用于开发测试,因此Power BI主帐户或服务主体可以生成的嵌入令牌的数量受到限制。专用功能需要嵌入生产环境中。您可以使用专用容量生成多少个嵌入令牌没有限制。

因此,您没有分配专用容量就投产了,并且达到了可以生成的令牌数量的上限。您必须购买Power BI Premium容量并将其分配给该工作空间(这将使您无需更改代码即可继续操作),或者完全停止使用嵌入式令牌。

您可以改用AAD令牌。在embedConfiguration中将tokenType更改为TokenType.AAd,并使用从ADAL的AcquireTokenAsync方法获得的令牌(您用来构造tokenCredentials的令牌传递给{{ 1}}的构造函数。