如何从我的 blazor (c#) 代码连接到 c# web api,两者都在 gitpod 上 运行?

How do I connect to the c# web api out of my blazor (c#) code, both running on gitpod?

我目前正在开发一个 PoC(概念验证)应用程序,前端使用 Blazor,后端使用 c# web api 进行数据访问。

我每次想访问 api 时都会收到 ERR_CONNECTION_REFUSED。 我的设置有点奇怪。

我需要从 Index.razor 调用 api。 我这样调用 API:

protected override async Task OnInitializedAsync()
{
    try
    {
        status = await Http.GetJsonAsync<string>("https://localhost:8394/ApiRunningController");
    }
    catch(Exception e)
    {
        requestSuccess = false;
        status = "ERROR: " + e.Message;
    }
 }

这就是 API 配置的样子。 launchSettings.json(仅 "api": { } 部分):

"api": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "apirunningcontroller",
  "applicationUrl": "https://localhost:8394;http://localhost:8393",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }

我在 Startup.cs 中的 ConfigureServices() 和 Configure() 方法:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddCors();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

        app.UseCors(c => c
               .AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader()
           );
    }

Api 控制器:

[ApiController]
[Route("[controller]")]
public class ApiRunningController : ControllerBase
{
    // Some other code like initializing a logger in the constructor etc...
    [HttpGet]
    public string Get()
    {
        ApiModel model = new ApiModel();
        return model.Status;
    }
}

代码很多我想我已经post编辑了重要的代码片段。如果我忘记了什么,请不要介意发表评论。我会尽快post。

用户的解决方案:sven-efftinge

必须在控制台中执行 "gp url 8394" 以获得端口 8394 的已翻译 url。然后我必须将那个 url 用于 HttpRequest。

protected override async Task OnInitializedAsync()
{
    try
    {
        string translated_url = "https://8394-...gitpod.io/ApiRunningController"
        status = await Http.GetJsonAsync<string>(translated_url);
    }
    catch(Exception e)
    {
        requestSuccess = false;
        status = "ERROR: " + e.Message;
    }
 }