Ich bin nicht sicher, was ich vermisse, kann aber meine CORS-Richtlinie anscheinend nicht mit .NET Core 3.1 und Angular 8 clientseitig zum Laufen bringen.
Startup.cs
::
public void ConfigureServices(IServiceCollection services)
{
// ...
// Add CORS policy
services.AddCors(options =>
{
options.AddPolicy("foo",
builder =>
{
// Not a permanent solution, but just trying to isolate the problem
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
// Use the CORS policy
app.UseCors("foo");
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Fehlermeldung Clientseitig:
Access to XMLHttpRequest at 'https://localhost:8082/api/auth/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
AKTUALISIEREN:
Obwohl ich war CORS falsch (und die akzeptierte Antwort unten in der Tat helfen mit , dass) die Wurzel Problem Konfiguration war in keinem Zusammenhang. Für zusätzlichen Kontext funktionierte die App einwandfrei, wenn die API und die Angular-App über die CLI ausgeführt wurden. Dieses Problem trat erst auf, nachdem beide auf einem Webserver bereitgestellt wurden.
Das "eigentliche" Problem hing schließlich mit der SQL-Verbindung zusammen, die ich erst entdeckte, nachdem ich der API eine Flatfile-Fehlerprotokollierung hinzugefügt und einen SQL Server-Trace ausgeführt hatte, um festzustellen, dass die App überhaupt keine Verbindung zu SQL herstellen konnte.
Normalerweise würde ich erwarten, dass dies nur eine 500 zurückgibt, und ich hätte das Problem innerhalb von 10 Sekunden erkannt. Die falsche Konfiguration von CORS bedeutete jedoch, dass eine 500 nie zurückgegeben wurde, da die CORS-Middleware zuerst fehlschlug. Das war, gelinde gesagt, immens frustrierend! . Ich möchte dies jedoch hier hinzufügen, falls sich andere in dieser Situation befinden, da ich "das falsche Kaninchen gejagt" habe, wenn Sie so wollen. Nachdem ich die CORS-Konfiguration korrigiert hatte, stellte ich fest, dass das eigentliche Problem völlig unabhängig von CORS war.
TL; DR; - Manchmal können serverseitige .NET-Fehler "Nicht-CORS" als CORS-Fehler zurückgegeben werden, wenn die CORS-Richtlinien nicht richtig festgelegt wurden
Verweise:
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");
vorher einzustellenapp.UseHttpsRedirection();