Server Program.cs:
festgelegt
Code: Select all
builder.Services.AddHttpClient("ServerHttpClient", client =>
{
client.BaseAddress = new Uri(builder.Configuration["MainDomain"]!);
});
Code: Select all
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();
Code: Select all
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);
}
}
Falls Ihnen das aufgefallen ist client Program.cs, ich habe ein Protokoll hinzugefügt, um die BaseAddress zu überprüfen. Wenn kein Fehler auftritt, wird das Protokoll in der Browserkonsole angezeigt. Wenn jedoch ein Fehler auftritt, ist BaseAddress nicht nur null, sondern das Protokoll wird auch nicht angezeigt. Es ist, als ob es diese Codezeile nicht durchlaufen hätte. Selbst wenn BaseAddress null ist, hätte meiner Meinung nach mindestens die Zeichenfolge „The BaseAddress is:“ protokolliert werden sollen.
Was mache ich falsch?
BEARBEITEN:
Okay, nach weiteren Tests scheint es ein Timing-Problem zu sein. Wenn ich auf die Anmeldeschaltfläche klicke, sobald sie angezeigt wird, scheint der Clientcode noch nicht ausgeführt worden zu sein (?). Aus diesem Grund wird kein Protokoll angezeigt und BaseAddress ist null. Ich vermute, das ist die vorgerenderte Serverseite (falls falsch, ich habe gerade erst mit dem Lesen begonnen)? Aber wenn ich ein paar Sekunden warte, wird das Protokoll angezeigt und BaseAddress erhält einen Wert.
Wenn dies tatsächlich der Fall ist, wie gehen wir normalerweise damit um?
EDIT 2:
Ich bin mir nicht sicher, ob es sich um ein Zeitproblem handelt, da ich auf einen Fall gestoßen bin, bei dem das Protokoll auch nach dem Warten nicht vollständig angezeigt wurde für ein paar Minuten. Aber nach dem Aktualisieren wird das Protokoll angezeigt.