Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc PowerBI api GenerateTokensingGroupAsync-IsEffectiveIdentityRequired突然设置为true_Asp.net Mvc_Powerbi_Powerbi Api - Fatal编程技术网

Asp.net mvc PowerBI api GenerateTokensingGroupAsync-IsEffectiveIdentityRequired突然设置为true

Asp.net mvc PowerBI api GenerateTokensingGroupAsync-IsEffectiveIdentityRequired突然设置为true,asp.net-mvc,powerbi,powerbi-api,Asp.net Mvc,Powerbi,Powerbi Api,因此,我有一个mvc web应用程序,它利用Power BI api—应用程序拥有数据。多年来,它一直运转良好,但今天早上,它突然在GenerateTokens的电话中坏了。错误是:“创建用于访问数据集xxxxxxx-xxx-xxxxxxx-xxxxxx-xxxxxx的嵌入令牌需要提供有效的标识” 这是原始代码:(在今天早上之前一直工作正常) datasets.EffectiveIdentityRequired=true。要使旧代码正常工作,EffectiveIdentityRequired属性

因此,我有一个mvc web应用程序,它利用Power BI api—应用程序拥有数据。多年来,它一直运转良好,但今天早上,它突然在GenerateTokens的电话中坏了。错误是:“创建用于访问数据集xxxxxxx-xxx-xxxxxxx-xxxxxx-xxxxxx的嵌入令牌需要提供有效的标识”

这是原始代码:(在今天早上之前一直工作正常)

datasets.EffectiveIdentityRequired=true。要使旧代码正常工作,EffectiveIdentityRequired属性必须为false。无法在代码中设置此选项

因此,我们使用以下代码修复了该问题:

foreach (Microsoft.PowerBI.Api.Models.Report report in reports.Value)
{
    var datasets = await client.Datasets.GetDatasetInGroupAsync(new Guid(GroupId), report.DatasetId);

    var generateTokenRequestParameters = new GenerateTokenRequest();

    if (datasets.IsEffectiveIdentityRequired == true)
    {
        var role = credential.Role;
        var rls = new EffectiveIdentity(credential.UserName, new List<string> { report.DatasetId }, new List<string> { role });
        generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view", rls);
    }
    else
    {
        generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
    }

    var tokenResponse = await client.Reports.GenerateTokenInGroupAsync(new Guid(GroupId), report.Id, generateTokenRequestParameters);
foreach(Microsoft.PowerBI.Api.Models.Report-in-reports.Value)
{
var datasets=await client.datasets.getdatasetinggroupasync(新Guid(GroupId),report.DatasetId);
var generateTokenRequestParameters=new GenerateTokenRequest();
if(datasets.IsEffectiveIdentityRequired==true)
{
var-role=credential.role;
var rls=新的有效标识(credential.UserName,新列表{report.DatasetId},新列表{role});
generateTokenRequestParameters=新的GenerateTokenRequest(访问级别:“视图”,rls);
}
其他的
{
generateTokenRequestParameters=新的GenerateTokenRequest(accessLevel:“视图”);
}
var tokenResponse=wait client.Reports.GenerateTokenInGroupAsync(新Guid(GroupId)、report.Id、generateTokenRequestParameters);
所以问题是什么改变了数据集。EffectiveIdentityRequired=true?我们已经6个月没有做过代码更改了,我们的Power BI人员说他们没有对reports/data cube/gateway/Power BI角色做任何更改。这发生在我们所有的Power BI报告中,跨越多个工作区、web应用程序、数据中心ubes等。一组通过Power BI网关在prem上,另一组在Azure分析服务器的云上。我也没有发现任何文档表明microsoft更改了api

有人有什么想法吗

foreach (Microsoft.PowerBI.Api.Models.Report report in reports.Value)
{
    var datasets = await client.Datasets.GetDatasetInGroupAsync(new Guid(GroupId), report.DatasetId);

    var generateTokenRequestParameters = new GenerateTokenRequest();

    if (datasets.IsEffectiveIdentityRequired == true)
    {
        var role = credential.Role;
        var rls = new EffectiveIdentity(credential.UserName, new List<string> { report.DatasetId }, new List<string> { role });
        generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view", rls);
    }
    else
    {
        generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
    }

    var tokenResponse = await client.Reports.GenerateTokenInGroupAsync(new Guid(GroupId), report.Id, generateTokenRequestParameters);