Hola usuario de nuestro sitio, tenemos la solución a tu interrogante, continúa leyendo y la encontrarás aquí.
Solución:
Nota esto se puede aplicar a .net core 3.1
Como se indica en los documentos de Microsoft, parece que no funciona.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
// Preceding code ommitted.
app.UseRouting();
app.UseCors();
app.UseEndpoints(endpoints =>
endpoints.MapControllers();
);
// Following code ommited.
Advertencia
Con el enrutamiento de punto final, el middleware CORS debe configurarse para ejecutarse entre las llamadas a UseRouting y UseEndpoints. Una configuración incorrecta hará que el middleware deje de funcionar correctamente.
Pero si mueve su UseCors() en primer lugar, su aplicación funcionará como se esperaba, por lo que el código de trabajo será
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>
options.AddDefaultPolicy(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()));
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
//place your useCors here
app.UseCors();
app.UseRouting();
app.UseEndpoints(endpoints =>
endpoints.MapControllers();
);
// Following code ommited.
La respuesta aceptada no funcionó para mí, así que decidí poner aquí lo que funcionó para mí. En caso de que alguien tropiece con el mismo problema.
Estaba enfrentando el mismo problema en mis pruebas locales mientras jugaba con SignalR en Angular 9.
Lo resolví cambiando la URL de mi aplicación Asp NET Core (3.1) de https a http. si está utilizando Visual Studio,
- simplemente haga clic derecho en las propiedades del proyecto -> Depurar.
- Desmarque Habilitar SSL
Además, no olvide cambiar el puerto en su URL en la aplicación angular. Entonces, básicamente, la URL en la aplicación angular será algo como esto
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl("http://localhost:50782/hub").build();
mientras que el código relevante en el método Configurar es algo como esto
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("_myAllowSpecificOrigins");
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapRazorPages();
endpoints.MapHub("/hub");
);
y en su método configureServices que tenía siguiendo
services.AddRazorPages();
services.AddCors(options =>
options.AddPolicy("_myAllowSpecificOrigins",
builder =>
builder.WithOrigins("https://localhost:4200")
.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed((x) => true)
.AllowCredentials();
);
);
services.AddSignalR();
Espero que esto ayude !
ACTUALIZAR
si solo está jugando con muestras en su máquina local, también puede intentar ejecutar Chrome en modo de seguridad como se menciona aquí
en mi mac simplemente ejecuté el comando desde la terminal
open -n -a /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security
Con esto, debería poder ejecutar su muestra sin que CORS se moleste
intente algo como esto en su clase de configuración de inicio:
app.Map("/CoordinatorHub/negotiate", map =>
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
// You can enable JSONP by uncommenting line below.
// EnableDetailedErrors = true,
// EnableJSONP = true
;
map.RunSignalR(hubConfiguration);
);
Sección de Reseñas y Valoraciones
Si aceptas, tienes la libertad de dejar una sección acerca de qué le añadirías a este ensayo.