gpt4 book ai didi

powerbi - 401 - 数据集刷新 PowerBI 期间出现未经授权的错误

转载 作者:行者123 更新时间:2023-12-03 22:04:26 25 4
gpt4 key购买 nike

我正在尝试为 PowerBI 报告进行数据集刷新。我创建了网关,并且能够从管理门户刷新数据集。我可以验证刷新是否从 UI 成功发生,即管理门户中的上次刷新列。但是当我尝试从 C# webapi 代码进行刷新时,我收到了下面提到的错误。

Error Message:
The remote server returned an error: (401) Unauthorized.

Stack Trace:
at System.Net.HttpWebRequest.GetResponse()
at BlueSkyPowerBIService.Controllers.PowerBIController.<RefreshDatasetsForReports>d__13.MoveNext() in C:\Krishnan\RSI\SourceCode\Bluesky Developement\BlueSky Development\BlueSkyPowerBIService\BlueSkyPowerBIService\Controllers\PowerBIController.cs:line 258

在刷新代码之前,我能够再次对 Azure AD 进行身份验证,它成功并生成了身份验证 token ,但是当它调用 API 进行刷新时,它会因上述错误而崩溃。

请找到我用于数据刷新的代码

List<ReportDetails> reportDetailsList = new List<ReportDetails>();

var result = new EmbedConfig();
ReportDetails reportDetails = new ReportDetails();
try
{
result = new EmbedConfig { Username = username, Roles = roles };
var error = GetWebConfigErrors();
if (error != null)
{
result.ErrorMessage = error;
//return View(result);
return null;
}
var credential = new UserPasswordCredential(Username, Password);

var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ClientId, credential);

if (authenticationResult == null)
{
result.ErrorMessage = "Authentication Failed.";
//return View(result);
return null;
}

var tokenCredentials = new TokenCredentials(authenticationResult.AccessToken, "Bearer");

// Create a Power BI Client object. It will be used to call Power BI APIs.
using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
{
// Get a list of reports.
var reports = await client.Reports.GetReportsAsync();
for (int index = 0; index < reports.Value.Count; index++)
{
reportDetails = new ReportDetails();
Report report = reports.Value[index];

HttpWebRequest request;

if (report.Id == "6317f207-57d3-4f5f-9644-18bfbb9bef99")
{
var url = "https://api.powerbi.com/v1.0/myorg/groups/{0}/datasets/{1}/refreshes";
request = System.Net.HttpWebRequest.CreateHttp(String.Format(url, GroupId, report.DatasetId));

request.KeepAlive = true;
request.Method = "POST";
request.ContentLength = 0;

request.Headers.Add("Authorization", String.Format("Bearer {0}", authenticationResult.AccessToken));

using (Stream writer = request.GetRequestStream())
{
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Dataset refresh request{0}", response.StatusCode.ToString());
}
}
}//end for(int index=0; index< reports.Value.Count; index++)
return reportDetailsList;
}
}
catch (HttpOperationException exc)
{
result.ErrorMessage = string.Format("Status: {0} ({1})\r\nResponse: {2}\r\nRequestId: {3}", exc.Response.StatusCode, (int)exc.Response.StatusCode, exc.Response.Content, exc.Response.Headers["RequestId"].FirstOrDefault());
}
catch (Exception exc)
{
result.ErrorMessage = exc.ToString();
}


我已在 Azure 门户中的应用注册下授予所有必需的权限, enter image description here

任何想法为什么我会收到此错误?如何解决这个问题?

最佳答案

这看起来像是您用于执行刷新的 Azure Active Directory 应用程序的权限配置错误。如图here我们需要注册一个原生应用并声明一些权限才能访问 Power BI REST API。

您需要确保此应用具有 Dataset.ReadWrite.All允许。您可以在 Azure 门户中的 Azure Active Directory -> App Registrations 下查看甚至更改应用程序的权限。 .如果看不到应用程序,请选择 All apps从右侧的下拉菜单中。

这就是我们的应用程序的外观,我们成功地使用它通过其余 API 执行刷新

enter image description here

关于powerbi - 401 - 数据集刷新 PowerBI 期间出现未经授权的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com