Server Program.cs:
Код: Выделить всё
builder.Services.AddHttpClient("ServerHttpClient", client =>
{
client.BaseAddress = new Uri(builder.Configuration["MainDomain"]!);
});
Код: Выделить всё
var builder = WebAssemblyHostBuilder.CreateDefault(args);
Console.WriteLine($"The BaseAddress is: {builder.HostEnvironment.BaseAddress}");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
Код: Выделить всё
public partial class Login : ComponentBase
{
[Inject]
public HttpClient HttpClient { get; set; } = default!;
async Task LogInAsync()
{
//...some code omitted for brevity
var response = await HttpClient.PostAsync("api/users/signin", content);
}
}
Если вы заметили в client Program.cs, я добавил журнал для проверки BaseAddress. Когда ошибок не происходит, я вижу, что журнал появляется в консоли браузера. Но когда происходит ошибка, BaseAddress не только имеет значение null, но и журнал даже не появляется. Как будто он не прошел через эту строку кода. Даже если BaseAddress имеет значение null, я думал, что он должен был зарегистрировать хотя бы строку «The BaseAddress is:».
Что я делаю не так?
РЕДАКТИРОВАТЬ:
Хорошо, после еще одного тестирования выяснилось, что это проблема времени. Если я нажму кнопку входа в систему, как только она появится, кажется, что клиентский код еще не запущен (?), И поэтому журнал не появляется, а BaseAddress имеет значение null. Я думаю, это предварительно обработанная страница сервера (извините, если не так, я только начал читать)? Но если я подожду несколько секунд, он отобразит журнал и BaseAddress получит значение.
Если это действительно так, как мы обычно с этим справляемся?
Подробнее здесь: https://stackoverflow.com/questions/793 ... or-project
Мобильная версия