我正在try 使用C#编写以下代码来调用REST API.当我将这段代码放在它自己的单独C#应用程序中时,它就可以工作了.然而,当我try 将其合并到另一个应用程序中,以便可以动态克隆报表时,HttpResponseMessage就退出了,没有响应、没有错误或任何东西.
所以基本上我调试,我一行一行地调试.当它到达HttpResponseMessage时,它退出ReportClone.Main()类并启动DatasetManager.ConnectToSQLServer()类.我看不到任何错误消息.
下面是调用报表克隆REST API的代码.
using System;
using System.Data.SqlClient;
using Microsoft.AnalysisServices.Tabular;
namespace PowerBI_Development {
class Program {
static void Main() {
ReportClone.Main();
DatasetManager.ConnectToSQLServer();
}
}
}
然后调用该文件:
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace PowerBI_Development
{
internal class ReportClone
{
static readonly HttpClient client = new HttpClient();
public static async Task Main()
{
try
{
var reportName = "REPORT_NAME";
var reportID = "REPORT_ID";
var targetModelID = "TARGET_MODEL_ID";
var targetWorkspaceID = "TARGET_WORKSPACE_ID";
var bearer = "BEARER TOKEN";
var url = $"https://api.powerbi.com/v1.0/myorg/reports/{reportID}/Clone";
var data = "{\r\n \"name\": \"" + reportName + "\",\r\n \"targetModelId\": \"" + targetModelID + "\",\r\n \"targetWorkspaceId\": \"" + targetWorkspaceID + "\"\r\n}";
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + bearer);
var content = new StringContent(data, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error copying reports: " + ex.Message);
Console.ResetColor();
}
}
}
}
我可以让它在一个单独的文件中工作,但我希望将其组合在一起,这样我就可以在循环创建数据集的同时循环访问rest API.我想同时创建一个数据集和一个报表.