.net - C# no puede conectarse a la API web autohospedada desde otro dispositivo

CorePress2024-01-24  11

Tengo una API web autohospedada en C# (aplicación de consola .NET Framework). Puedo verificar la API desde localhost pero no puedo conectarme a la API web desde otro dispositivo, como un teléfono u otro escritorio. Intenté 192.168.X.X:PORT pero no tuve éxito.

Me di cuenta de que si desactiva el Firewall, cuando intenta realizar una solicitud a la API desde otro dispositivo, la solicitud falla y muestra el error: "Solicitud incorrecta: nombre de host no válido. Error HTTP 400. El nombre de host de la solicitud no es válido. Si habilito el Firewall, la solicitud tardará muchísimo tiempo.

¿Has intentado desactivar Windows' firewall e intentarlo de nuevo?

JuanKB1024

27 de marzo de 2021 a las 1:28

Sí, lo intenté. También verifiqué el acceso remoto para Spring Java y fue exitoso.

- loco

27 de marzo de 2021 a las 1:33



------------------------------------

Este artículo podría ayudarte.

El problema es que, de forma predeterminada, el enlace se dirige únicamente a localhost:PORT. Si se vincula a 0.0.0.0:PORT (y permite quepuerto en su firewall) podrá acceder desde otra máquina.

Puedes configurarlo mediante UseUrls()

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseUrls("http://0.0.0.0:5000", "https://0.0.0.0:5001");
            });
}

o al ejecutar la aplicación

$> ./myApp --urls=http://0.0.0.0:5000

4

1

¡Gracias! ¿Mi problema era un firewall y un paquete de host? así que cambio localhost a '*'.

- loco

27/03/2021 a las 11:07

No recordaba si '*' realmente funciona. Mis aplicaciones aquí están configuradas con '0.0.0.0'. Es bueno saber que sí :)

-tgarcia

29 de marzo de 2021 a las 3:06

Tengo el mismo problema y cuando usé "http://*:9008/" como URL base, funcionó bien con todos los dispositivos en la misma red, pero no funciona con dispositivos fuera de la red, ¿alguien puede ayudarme, por favor?

- Elamir Ohana

7 de marzo de 2023 a las 18:32

¿Qué quieres decir con "fuera de la red"? Si está intentando acceder a él desde una red pública, p. desde Internet que aloja la aplicación en su red doméstica, necesita configurar NAT, redirección de puertos y/o una regla de firewall en su red. Si accede a la aplicación desde otro dispositivo en su red, entonces la configuración es correcta. Todo lo demás depende de la configuración de su propia red privada.

-tgarcia

8 de marzo de 2023 a las 19:15



------------------------------------

Intenta hacer una nueva consultam configurando el firewall o deshabilitándolo

inserte un puerto como 1433 en la configuración de servicios de sql servce clint y habilítelo

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare