restpowerbipowerbi-api

Power BI REST API ExportToFileInGroup Not Working


I am able to programmatically log in to the PowerBI Client, gather my Workspaces as well as get a specific Report from a specific Workspace. I need to programmatically render that report to a .pdf or .xlsx file. Allegedly this is possible with the ExportToFileInGroup/ExportToFileInGroupAsync methods. I even created a very simple report without any parameters. I can embed this using the sample app from here. So that at least tells me that I have what I need setup in the backend. But it fails when I try to run the ExportToFileInGroupAsync method (errors below code.)

My Code is:

var accessToken = await tokenAcquisition.GetAccessTokenForUserAsync(new string[] {
  PowerBiScopes.ReadReport,
  PowerBiScopes.ReadDataset,
});

var userInfo = await graphServiceClient.Me.Request().GetAsync();
var userName = userInfo.Mail;

AuthDetails authDetails = new AuthDetails {
  UserName = userName,
  AccessToken = accessToken,
};

var credentials = new TokenCredentials($"{accessToken}", "Bearer");
PowerBIClient powerBIClient = new PowerBIClient(credentials);

var groups = await powerBIClient.Groups.GetGroupsAsync();
var theGroup = groups.Value
  .Where(x => x.Name == "SWIFT Application Development")
  .FirstOrDefault();

var groupReports = await powerBIClient.Reports.GetReportsAsync(theGroup.Id);
var theReport = groupReports.Value
  .Where(x => x.Name == "No Param Test")
  .FirstOrDefault();

var exportRequest = new ExportReportRequest {
  Format = FileFormat.PDF,
};

string result = "";

try {
  var response = await powerBIClient.Reports.ExportToFileInGroupAsync(theGroup.Id, theReport.Id, exportRequest);
  result = response.ReportId.ToString();
} catch (Exception e) {
  result = e.Message;
}

return result;

It gets to the line in the try block and then throws the following errors:

An error occurred while sending the request.

Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host..

UPDATE Relating to @AndreyNikolov question, here is our Embedded capacity: enter image description here

After this was implemented, no change. Same exact error.


Solution

  • Turns out the issue was on our side, more specifically, security/firewall settings. Here is the exact quote from our networking guru.

    "After some more investigation we determined that our firewall was causing this issue when it was terminating the SSL connection. We were able to add a bypass for the URL and it is now working as expected."