Ich habe eine Blazor Server-Web-App und eine ASP.NET Core-Web-API, die auf localhost ausgeführt wird. Ich versuche, HTTP-Anfragen von der Web-App an die API zu senden, kann aber keine Anfragen auf der Registerkarte „Netzwerk“ des Browsers oder Antworten von der API sehen. Trotz der Konfiguration von CORS und der Einstellung der richtigen HttpClient.BaseAddress scheinen die Anfragen die API nicht zu erreichen.
Ich habe versucht:
1 . Cors-Konfiguration in WebAPI:
Code: Select all
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
{
policy.WithOrigins("http://localhost:5235")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
app.UseCors();
2. HttpClient-Konfiguration in WebApp:
Code: Select all
builder.Services.AddScoped(sp => new HttpClient
{
BaseAddress = new Uri("http://localhost:5213/")
});
3. Testen Sie den Endpunkt mithilfe der Razor-Seite:
Code: Select all
@page "/test-api-connectivity"
@inject HttpClient HttpClient
Test API Connectivity
Test Connection
@responseMessage
@code {
private string responseMessage = string.Empty;
private async Task FetchData()
{
try
{
var response = await HttpClient.GetAsync("api/locations");
responseMessage = response.IsSuccessStatusCode
? "Connection successful!"
: $"Connection failed: {response.StatusCode}";
}
catch (Exception ex)
{
responseMessage = $"Error: {ex.Message}";
}
}
}
Testen mit Swagger und Postman:
- Die API funktioniert gut mit Postman und Swagger.
- Der Endpunkt /api/locations gibt in Postman 17.820 Zeilen zurück, sodass die API funktionsfähig ist.
Browser-Debugging:< /h3>
- Ich sehe keine ausgehenden Anfragen auf der Registerkarte „Netzwerk“ des Browsers, wenn ich auf die Schaltfläche „Verbindung testen“ klicke.
- In der Browserkonsole werden keine Fehler angezeigt.
Wenn Sie auf der Testseite auf die Schaltfläche klicken (
oder Locations), erwarte ich, dass der Browser eine
GET-Anfrage an
http://localhost:5213/api/locations sendet und eine Antwort zurückgibt.Die Fehlerbehebung war seitdem frustrierend: Auf der Registerkarte „Netzwerk“ und „Konsole“ des Browsers sind keine HTTP-Anfragen sichtbar. Die API protokolliert keine empfangenen Anfragen. Und schließlich wird die Blazor-Seite nicht mit der Antwort aktualisiert.
Frage:
Was könnte meine Blazor Server-Webanwendung daran hindern, HTTP-Anfragen an zu senden? die API, obwohl:
- CORS konfiguriert ist,
- API mit Postman und Swagger funktioniert,
- Die HttpClient.BaseAddress ist festgelegt richtig?
Ich habe eine Blazor Server-Web-App und eine ASP.NET Core-Web-API, die auf localhost ausgeführt wird. Ich versuche, HTTP-Anfragen von der Web-App an die API zu senden, kann aber keine Anfragen auf der Registerkarte „Netzwerk“ des Browsers oder Antworten von der API sehen. Trotz der Konfiguration von CORS und der Einstellung der richtigen HttpClient.BaseAddress scheinen die Anfragen die API nicht zu erreichen.
Ich habe versucht:
1 . Cors-Konfiguration in WebAPI:
[code]builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
{
policy.WithOrigins("http://localhost:5235")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
app.UseCors();
[/code]
2. HttpClient-Konfiguration in WebApp:
[code]builder.Services.AddScoped(sp => new HttpClient
{
BaseAddress = new Uri("http://localhost:5213/")
});
[/code]
3. Testen Sie den Endpunkt mithilfe der Razor-Seite:
[code]@page "/test-api-connectivity"
@inject HttpClient HttpClient
Test API Connectivity
Test Connection
@responseMessage
@code {
private string responseMessage = string.Empty;
private async Task FetchData()
{
try
{
var response = await HttpClient.GetAsync("api/locations");
responseMessage = response.IsSuccessStatusCode
? "Connection successful!"
: $"Connection failed: {response.StatusCode}";
}
catch (Exception ex)
{
responseMessage = $"Error: {ex.Message}";
}
}
}
[/code]
Testen mit Swagger und Postman:
[list]
[*]Die API funktioniert gut mit Postman und Swagger.
[*]Der Endpunkt /api/locations gibt in Postman 17.820 Zeilen zurück, sodass die API funktionsfähig ist.
[/list]
Browser-Debugging:< /h3>
[list]
[*]Ich sehe keine ausgehenden Anfragen auf der Registerkarte „Netzwerk“ des Browsers, wenn ich auf die Schaltfläche „Verbindung testen“ klicke.
[*]In der Browserkonsole werden keine Fehler angezeigt.
[/list]
Wenn Sie auf der Testseite auf die Schaltfläche klicken ([code]TestApiConnectivity[/code] oder Locations), erwarte ich, dass der Browser eine [b]GET[/b]-Anfrage an http://localhost:5213/api/locations sendet und eine Antwort zurückgibt.Die Fehlerbehebung war seitdem frustrierend: Auf der Registerkarte „Netzwerk“ und „Konsole“ des Browsers sind keine HTTP-Anfragen sichtbar. Die API protokolliert keine empfangenen Anfragen. Und schließlich wird die Blazor-Seite nicht mit der Antwort aktualisiert.
Frage:
Was könnte meine Blazor Server-Webanwendung daran hindern, HTTP-Anfragen an zu senden? die API, obwohl:
[list]
[*]CORS konfiguriert ist,
[*]API mit Postman und Swagger funktioniert,
[*]Die HttpClient.BaseAddress ist festgelegt richtig?
[/list]