Как подключиться к веб-интерфейсу c# из моего блейзора (c#), который работает на gitpod? - PullRequest
0 голосов
/ 07 февраля 2020

В настоящее время я работаю над приложением Po C (подтверждение концепции) с Blazor в интерфейсе и веб-интерфейсом c# в фоновом режиме для доступа к данным.

Я получаю ERR_CONNECTION_REFUSED каждый раз, когда хочу получить доступ к API. У меня какая-то странная настройка.

  • Я использую gitpod для разработки (Online IDE, визуальный код студии онлайн)
  • Все это работает на виртуальном сервере Ubuntu
  • Структура папок:

    blazor_po c

    API

    Контроллеры

    ApiRunningController.cs

    BlazorApp

    Страницы

    Index.razor

Мне нужно вызвать API из Index.razor. Я называю 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"
  }

Мои методы ConfigureServices () и Configure () в файле Startup.cs:

    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;
    }
}

Это много кода, я думаю, что я опубликовал важные фрагменты кода. Если я что-то забыл, не против оставить комментарий. Я опубликую это как можно скорее.

1 Ответ

1 голос
/ 07 февраля 2020

Решение пользователя: sven-efftinge

Нужно было сделать «gp url 8394» в консоли, чтобы получить переведенный URL для порта 8394. Затем мне пришлось использовать этот 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;
    }
 }
...