Forum Discussion
Integrate C# code in powerbi report
- 1 year ago
Hello powerbidev123,
Since Power BI cannot run C# code natively, the best approach is to:
1. Host the C# encryption logic in an Azure Function, API, or Power Automate connector.
2. Call this API from Power BI to dynamically generate the encrypted URL.a) So basically, a Power Automate Flow will take the unencrypted ID from Power BI.
using System; using System.Web.Http; using System.Security.Cryptography; using System.Text; public static class EncryptIDFunction { [FunctionName("EncryptID")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req) { string id = req.Query["id"]; if (string.IsNullOrEmpty(id)) return new BadRequestObjectResult("Missing ID"); string encryptedId = EncryptID(id); string url = $"https://yourdomain.com/download?file={encryptedId}"; return new OkObjectResult(new { pdfUrl = url }); } private static string EncryptID(string id) { using (var aes = Aes.Create()) { aes.Key = Encoding.UTF8.GetBytes("your-32-byte-key"); aes.IV = Encoding.UTF8.GetBytes("your-16-byte-iv"); var encryptor = aes.CreateEncryptor(); byte[] encryptedBytes = encryptor.TransformFinalBlock( Encoding.UTF8.GetBytes(id), 0, id.Length); return Convert.ToBase64String(encryptedBytes); } } }b) Then, the Flow calls an Azure Function or C# Web API to encrypt the ID.
c)Finally, the encrypted URL is returned to Power BI and displayed in a table.
- 1 year ago
Hi Sahir_Maharaj , let me check this. Will get back to you if this solution works
Hello powerbidev123,
Since Power BI cannot run C# code natively, the best approach is to:
1. Host the C# encryption logic in an Azure Function, API, or Power Automate connector.
2. Call this API from Power BI to dynamically generate the encrypted URL.
a) So basically, a Power Automate Flow will take the unencrypted ID from Power BI.
using System;
using System.Web.Http;
using System.Security.Cryptography;
using System.Text;
public static class EncryptIDFunction
{
[FunctionName("EncryptID")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
{
string id = req.Query["id"];
if (string.IsNullOrEmpty(id)) return new BadRequestObjectResult("Missing ID");
string encryptedId = EncryptID(id);
string url = $"https://yourdomain.com/download?file={encryptedId}";
return new OkObjectResult(new { pdfUrl = url });
}
private static string EncryptID(string id)
{
using (var aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes("your-32-byte-key");
aes.IV = Encoding.UTF8.GetBytes("your-16-byte-iv");
var encryptor = aes.CreateEncryptor();
byte[] encryptedBytes = encryptor.TransformFinalBlock(
Encoding.UTF8.GetBytes(id), 0, id.Length);
return Convert.ToBase64String(encryptedBytes);
}
}
}
b) Then, the Flow calls an Azure Function or C# Web API to encrypt the ID.
c)Finally, the encrypted URL is returned to Power BI and displayed in a table.
- powerbidev1231 year agoSolution Sage
Hi Sahir_Maharaj , let me check this. Will get back to you if this solution works