Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hi All,
I am not able to upload PBIX file in workspace.
First ,
1. I created Workspace collection manually.
2. Created workspace programmatically and its returne the workspace id.
3. Add the pbix file using programmatically
1. i get file using HttpPosted file and upload to the blob.
2. Download the from the blob as a stream and upload the power bi workspace.
I used PostImportWithFileAsync function.
i got "Operation returned an invalid status code 'BadRequest'" type Microsoft.Rest.HttpOperationException
Please help.
Solved! Go to Solution.
Below demo works in my test. I'd guess it might be the incorrect stream that causes the error? Before using a blob stream, instead testing with a local file at first.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
//Install-Package Microsoft.PowerBI.Api
using Microsoft.PowerBI.Api.V1;
using Microsoft.PowerBI.Api.V1.Models;
using System.IO;
using System.Threading;
using Microsoft.Rest;
namespace importPbix_PBIE
{
class Program
{
static string clientId = "49df1bc7-db68-4fb4-91c0-6d93f770d1a4";
//power bi workspace collection accesskey
static string accessKey = "KJixsmmwxxxxxxxiXY8iE/zNVHROCmcaOIFr6a2vmQ==";
static string workspaceCollectionName = "cixxsxxdemo";
static string workspaceId = "79c71xxxxb79d2xxxxe0b";
static string filePath = @"C:\test\test.pbix";
static void Main(string[] args)
{
var task = ImportPbix(workspaceCollectionName, workspaceId, "mytestdataset", filePath);
task.Wait();
Console.ReadKey();
}
static async Task<Import> ImportPbix(string workspaceCollectionName, string workspaceId, string datasetName, string filePath)
{
using (var fileStream = File.OpenRead(filePath.Trim('"')))
{
using (var client = await CreateClient())
{
// Set request timeout to support uploading large PBIX files
client.HttpClient.Timeout = TimeSpan.FromMinutes(60);
client.HttpClient.DefaultRequestHeaders.Add("ActivityId", Guid.NewGuid().ToString());
// Import PBIX file from the file stream
var import = await client.Imports.PostImportWithFileAsync(workspaceCollectionName, workspaceId, fileStream, datasetName);
// Example of polling the import to check when the import has succeeded.
while (import.ImportState != "Succeeded" && import.ImportState != "Failed")
{
import = await client.Imports.GetImportByIdAsync(workspaceCollectionName, workspaceId, import.Id);
Console.WriteLine("Checking import state... {0}", import.ImportState);
Thread.Sleep(1000);
}
return import;
}
}
}
static async Task<PowerBIClient> CreateClient()
{
// Create a token credentials with "AppKey" type
var credentials = new TokenCredentials(accessKey, "AppKey");
// Instantiate your Power BI client passing in the required credentials
var client = new PowerBIClient(credentials);
// Override the api endpoint base URL. Default value is https://api.powerbi.com
client.BaseUri = new Uri("https://api.powerbi.com");
return client;
}
}
}
Below demo works in my test. I'd guess it might be the incorrect stream that causes the error? Before using a blob stream, instead testing with a local file at first.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
//Install-Package Microsoft.PowerBI.Api
using Microsoft.PowerBI.Api.V1;
using Microsoft.PowerBI.Api.V1.Models;
using System.IO;
using System.Threading;
using Microsoft.Rest;
namespace importPbix_PBIE
{
class Program
{
static string clientId = "49df1bc7-db68-4fb4-91c0-6d93f770d1a4";
//power bi workspace collection accesskey
static string accessKey = "KJixsmmwxxxxxxxiXY8iE/zNVHROCmcaOIFr6a2vmQ==";
static string workspaceCollectionName = "cixxsxxdemo";
static string workspaceId = "79c71xxxxb79d2xxxxe0b";
static string filePath = @"C:\test\test.pbix";
static void Main(string[] args)
{
var task = ImportPbix(workspaceCollectionName, workspaceId, "mytestdataset", filePath);
task.Wait();
Console.ReadKey();
}
static async Task<Import> ImportPbix(string workspaceCollectionName, string workspaceId, string datasetName, string filePath)
{
using (var fileStream = File.OpenRead(filePath.Trim('"')))
{
using (var client = await CreateClient())
{
// Set request timeout to support uploading large PBIX files
client.HttpClient.Timeout = TimeSpan.FromMinutes(60);
client.HttpClient.DefaultRequestHeaders.Add("ActivityId", Guid.NewGuid().ToString());
// Import PBIX file from the file stream
var import = await client.Imports.PostImportWithFileAsync(workspaceCollectionName, workspaceId, fileStream, datasetName);
// Example of polling the import to check when the import has succeeded.
while (import.ImportState != "Succeeded" && import.ImportState != "Failed")
{
import = await client.Imports.GetImportByIdAsync(workspaceCollectionName, workspaceId, import.Id);
Console.WriteLine("Checking import state... {0}", import.ImportState);
Thread.Sleep(1000);
}
return import;
}
}
}
static async Task<PowerBIClient> CreateClient()
{
// Create a token credentials with "AppKey" type
var credentials = new TokenCredentials(accessKey, "AppKey");
// Instantiate your Power BI client passing in the required credentials
var client = new PowerBIClient(credentials);
// Override the api endpoint base URL. Default value is https://api.powerbi.com
client.BaseUri = new Uri("https://api.powerbi.com");
return client;
}
}
}
Thanks Eric, i got it. I copy and paste your code, its working perfectly.
Thanks a lot.
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 1 |
| User | Count |
|---|---|
| 4 | |
| 4 | |
| 4 | |
| 3 | |
| 3 |