Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1K
Vistas
La conexión de SignalR falló cuando no estaba en localhost

Uso de Blazor como cliente. NET 6 tanto en el cliente como en el servidor.

Ya he estado intentando cualquier posible solución durante horas para esto y estoy atascado. El lado del cliente y el lado del servidor están en el mismo servidor (respaldado por wasm) pero no funciona cuando intenta conectarse al servidor a través de un dominio remoto, no localhost, que funcionó en la etapa de desarrollo.

Me he estado preguntando acerca de CORS, pero tengo mi CORS configurado correctamente y sigue igual, incluso si llamo al método AddAuthentication. Además, he intentado habilitar el servicio Websocket en funciones adicionales en IIS. Tenga en cuenta que estoy ejecutando esto en el servidor con publicación dotnet.

Consola del lado del cliente: ingrese la descripción de la imagen aquí

Detalles del websocket del lado del cliente: ingrese la descripción de la imagen aquí

Configuraciones relevantes del lado del servidor en el servidor que pueden afectar esto:

En appsettings.json:

 { "Kestrel": { "EndPoints": { "Http": { "Url": "https://0.0.0.0:443" } } },

En Inicio/Programa

 // CORS (before SignalR) builder.Services.AddCors(options => options.AddDefaultPolicy(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod())); //Add SignalR builder.Services.AddSignalR(opt => { opt.EnableDetailedErrors = true; opt.HandshakeTimeout = TimeSpan.FromSeconds(120); }); ; builder.Services.AddResponseCompression(opt => { opt.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/octet-stream" }); }); // SignalR response compression app.UseResponseCompression(); // log requests statuses in console if (true) { app.Use(async (context, next) => { await next.Invoke(); Console.WriteLine( $"{DateTime.Now.Hour} : {DateTime.Now.Minute} : {DateTime.Now.Second} - response: {context.Response.StatusCode}"); }); } // Handles exceptions and generates a custom response body app.UseExceptionHandler("/errors/500"); // Handles non-success status codes with empty body app.UseStatusCodePagesWithReExecute("/errors/{0}"); app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); // CORS app.UseCors(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); // Blazor app.MapFallbackToFile("index.html"); // Map SignalR Hubs app.UseEndpoints(endpoints => { endpoints.MapHub<SmsHub>("/smshub"); });

Múltiples códigos de estado 204 registrados en el servidor (debido a esto), lo que no debería estar sucediendo: ingrese la descripción de la imagen aquí

NOTA IMPORTANTE: como puede notar, en algunos casos, el OnConnectedAsync del concentrador se llama y se registra con la información que proporciona el usuario. Tal vez en algunos de los diferentes métodos que se intentan conectar al socket, pero cerrar la ventana del navegador no finalizará esa conexión hasta que se agote el tiempo de espera. Finalmente, quiero agregar este ejemplo de servidor en vivo que usa el proxy de Cloudflare, pero no tiene nada que ver con él.

Otorgaré la respuesta válida. Gracias.

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Intente habilitar la compatibilidad con Websocket en IIS. Mira esto...

over 4 years ago · Santiago Trujillo Denunciar

0

No estoy seguro si esto ayuda. Pero haz el equivalente .net 6 de esto:

 readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; options.AddPolicy(name: MyAllowSpecificOrigins, builder => { builder.WithOrigins("https://*******************").AllowAnyHeader().AllowAnyMethod().AllowCredentials(); }); app.UseCors(MyAllowSpecificOrigins);

Tuve algunos problemas de cors con errores no descriptivos y la definición explícita del origen lo resolvió.

over 4 years ago · Santiago Trujillo Denunciar

0

Buenas noticias.

Es bastante obvio que el problema no ocurre con el servicio Azure SignalR y sí, no ocurre. Pero de todos modos no es la solución correcta, además te cuesta 50 dólares al mes.

over 4 years ago · Santiago Trujillo Denunciar

0

Abra su cmd con el administrador. Ejecute debajo del comando y pruebe.

 netsh http add urlacl url=https://<your_ip_addr>:443/ user="NT AUTHORITY\Authenticated Users"
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda