page developers crear apps appid app c# android asp.net-web-api android-emulator localhost

c# - crear - https developers facebook com apps 124024574287414



C#Web-localhost: port works, 127.0.0.1:port no funciona (6)

Acabo de terminar de agregar componentes de la API web de C # (modelos y controladores de API web) a una copia localhost de un proyecto existente.

Los métodos GET de esta API web deben invocarse desde una aplicación de Android. En este enlace se explica que debería usar 10.0.2.2 en el emulador de Android para obtener el 127.0.0.1 la computadora.

Cuando hice esto, no funcionó para mi HttpRequest en la aplicación de Android. Así que fui al navegador de Android y lo escribí directamente, y tampoco funcionó.

Luego traté de usar 127.0.0.1 lugar de localhost en el navegador de mi computadora, y por alguna razón desconocida tampoco funciona ... ¿Hay alguna diferencia entre localhost y 127.0.0.1 ? Siempre pensé que eran uno y el mismo.

Aquí está el 400 error que recibo cuando uso 127.0.0.1 :

Y con localhost todo funciona bien.

Entonces, mi pregunta: ¿cómo puedo usar localhost en el emulador (o, ¿cómo puedo solucionar el error que recibo cuando uso 127.0.0.1 lugar de localhost )? Además, me gustaría saber la diferencia entre localhost y 127.0.0.1 , ya que siempre pensé que eran lo mismo.

Gracias de antemano por las respuestas.

Editar 1:

En esta pregunta de stackoverflow , mencionan el archivo de host en System32 de Windows. Abrí este archivo con Notepad ++ (como administrador) y descomente las líneas con 127.0.0.1 localhost y ::1 localhost . Pero desafortunadamente esto no solucionó el problema y todavía no puedo usar 127.0.0.1 en mi computadora como reemplazo de localhost . Probablemente porque mi problema es el inverso (puedo acceder al localhost , pero no a 127.0.0.1 , en lugar de al revés).

Editar 2:

En esta respuesta de stackoverflow se explica que las diferencias entre localhost y 127.0.0.1 son:

  • 127.0.0.1 se reconocerá más fácilmente como IP en algunos lenguajes de programación.
  • localhost se puede cambiar a otra IP en el archivo de host de la computadora (el archivo mencionado en mi Edit 1 ).
  • Hay algunas diferencias entre IPv4 e IPv6.

En general, entiendo las diferencias ahora, simplemente no entiendo por qué mi servidor local está funcionando, pero 127.0.0.1 no es ...

Editar 3:

¿Tiene que hacer algo con el port (uso 54408 como port )? Abrí cmd e hice las siguientes pruebas:

  • ping localhost : recibo una respuesta con 4 veces Reply from ::1: time<1ms .
  • ping 127.0.0.1 : Reply from 127.0.0.1: bytes=32 time<1ms TIL=128 una respuesta con 4 veces Reply from 127.0.0.1: bytes=32 time<1ms TIL=128
  • ping localhost:54408 : Recibo un error La Ping request could not find localhost:54408. Please check the name and try again. Ping request could not find localhost:54408. Please check the name and try again.
  • ping 127.0.0.1:54408 : recibo un error La Ping request could not find 127.0.0.1:54408. Please check the name and try again. Ping request could not find 127.0.0.1:54408. Please check the name and try again.

Y como he dicho antes: 127.0.0.1:54408 en el navegador muestra el error que se ve en la imagen de arriba. Y localhost:54408 funciona bien ...

Todavía nadie con una idea sobre cómo solucionar esto?

Editar 4:

Copia de mi hosts-file , ubicado en C:/Windows/System32/drivers/etc

# Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a ''#'' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. 127.0.0.1 localhost ::1 localhost

Las últimas dos líneas solían ser:

# 127.0.0.1 localhost # ::1 localhost

Editar 5 / Semi-Solución:

Después de la sugerencia de Jake C fui a buscar la configuración del puerto de Visual Studio y encontré el siguiente sitio . En la sección " Para especificar un puerto para un proyecto de aplicación web que usa el Visual Studio Development Server ", seguí las instrucciones y cambié la opción Web en Propiedades del proyecto para Use Visual Studio Development Server con mi 54408 port .

Este fue un gran paso en la dirección correcta, ya que la página de inicio 127.0.0.1:54408 ahora funciona. Sin embargo, una vez que trato de iniciar sesión con Google OAuth en el sitio web de C #, recibía el siguiente error:

Uno de mis ex colegas que trabajó en el proyecto web C # me contó una vez sobre esta publicación de stackoverflow . En la respuesta a esta publicación se afirma que debo agregar las redirect-urls (en mi caso, 127.0.0.1 ) a la Google APIs Console . En este momento, no tengo acceso a esta Console para mi proyecto localhost , ya que se obtiene a través de SVN . Le pediré permiso a uno de mis supervisores para ver la Google APIs Console de las Google APIs Console de este proyecto web de C # y tal vez edite los redirect-urls para incluir 127.0.0.1 .

Una vez que lo tenga completamente funcionando, aceptaré la respuesta de Jake C, ya que su explicación de las Http port configurations sí me ayudó a encontrar la respuesta.

Editar 6:

De acuerdo, utilicé mi propia Consola de API de Google y creé un nuevo Proyecto con una nueva ID de Cliente. http://localhost:54408/Account/ExternalLoginCallback el http://localhost:54408/Account/ExternalLoginCallback y http:127.0.0.1:54408/Account/ExternalLoginCallback a las URL de redireccionamiento. Luego, en el App_Start/AuthConfig.cs mi proyecto web C #, App_Start/AuthConfig.cs la configuración del Cliente para usar este nuevo cliente.

Una vez más, gracias a Jake C por su sugerencia de cambiar las http port configurations en Visual Studio. Esto hizo el truco para mí.


En visual studio 2015 con IIS express: primero en las propiedades del proyecto cambie la URL del proyecto de http://localhost:(Port No) a: http://127.0.0.1:(Port No)

y haga clic en Crear directorio visual

luego vaya a la ruta de su solución y abra el directorio ".vs" (el directorio está oculto) y abra "applicationhost.config"

<sites> <site name="WebSite1" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%/WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation=":8080:localhost" /> </bindings> </site> <site name="####" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="E:/Visual Studio 2015/Projects/####/####" /> </application> <bindings> <binding protocol="http" bindingInformation="*:5050:localhost" /> </bindings> </site> <site name="####(1)" id="3"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="E:/Visual Studio 2015/Projects/####/####" /> </application> <bindings> <binding protocol="http" bindingInformation="*:5050:127.0.0.1" /> </bindings> </site> <siteDefaults> <logFile logFormat="W3C" directory="%IIS_USER_HOME%/Logs" /> <traceFailedRequestsLogging directory="%IIS_USER_HOME%/TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> </siteDefaults> <applicationDefaults applicationPool="Clr4IntegratedAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites>

y cambie la última sección de enlace de su aplicación web desde * :( Puerto No): localhost a * :( Puerto No): 127.0.0.1

y detenga todo el proyecto en ejecución en IIS Express y reinícielo.


Por lo tanto, normalmente un error de nombre de host no válido de HTTP 400 generalmente significa que no tiene el conjunto de sitios web que acepta todos los nombres de host y / o direcciones IP. Supongo que debido a que esta es una aplicación C #, está alojando esto en IIS. Para solucionar este problema, abra el Administrador IIS (Win + R e ingrese inetmgr ), expanda el servidor y luego Sitios, luego haga clic derecho en el sitio web donde se aloja su aplicación y seleccione enlaces. En esta lista debe haber un enlace HTTP para el puerto 54408, haga doble clic en esto. Debajo de la dirección IP, asegúrese de que esté seleccionado Sin asignar y, debajo de Nombre del servidor, asegúrese de que el campo esté en blanco. Presione Aceptar, luego Cerrar. La configuración debe tener efecto inmediatamente sin necesidad de reiniciar IIS.

Si solo está probando esto a través de la implementación web integrada de Visual Studio, existen configuraciones similares a las anteriores en algún lugar de VS (estoy un poco oxidado, así que no recuerdo exactamente dónde o cómo). Alternativamente, puede configurar un sitio web en IIS exactamente como lo desea y luego hacer que VS se despliegue en ese sitio web en lugar de usar su propio servidor interno. Creo que puede haber algunos inconvenientes de depuración para hacerlo de esta manera (una vez más estoy un poco confusa en los detalles, los editaré cuando los recuerde o lo resuelvo).

Algunos antecedentes sobre por qué existen estas configuraciones: a veces un servidor necesita alojar múltiples sitios a los que se debe acceder a través del puerto 80. Digamos que tenemos foo.com y bar.com y son demasiado pequeños para garantizar la obtención de un bar.com separado servidor para ambos. Entonces, en su lugar, ambos están alojados en un servidor con una dirección IP de 1.2.3.4 . Ahora cuando ingresa la URL foo.com en el navegador y presiona ir, primero resuelve el nombre de host en 1.2.3.4 , y luego crea una solicitud y parte de esa solicitud se llama encabezado de host. El encabezado del host se completa con el nombre de host de la URL ingresada, en este caso foo.com . Cuando el servidor recibe la solicitud, mira el encabezado del host y devuelve el contenido de foo.com .

Ahora, si intentara ingresar 1.2.3.4 en el navegador, crearía una solicitud con un encabezado de host en blanco, porque no se especificó ninguno. Cuando el servidor recibe la solicitud, no sabe qué hacer porque el servidor aloja dos sitios web y no hay un encabezado de host que especifique cuál busca el navegador, por lo que devuelve un error.

Esto es probablemente lo que está sucediendo en su situación. Su sitio web se aloja bajo el nombre de host localhost y no se responde a ninguna otra solicitud. Las configuraciones que especifiqué para cambiar básicamente le dicen al servidor que no importa qué dirección IP (interfaz de red) entre, y no importa cuál sea el nombre de host que esté buscando, siempre y cuando esté ingresando en el puerto 54408, preséntelo. sitio web.


Probablemente no sea un problema de Android ni de Windows. Si ejecuta su servidor local por Visual Studio, no lo tendrá disponible a través de 127.0.0.1

En su lugar, intente configurar IIS en su computadora y luego implemente desde Visual Studio a IIS.

Alternativamente, pruebe los productos UltiDev: http://ultidev.com/products/cassini/CassiniDevGuide.htm http://ultidev.com/products/UWS-Cassini-Pro/Default.aspx

Algunas personas lograron usar tunelización, pero nunca lo intenté y no tengo idea de qué recomendar.

Simplemente algo que escucha 127.0.0.1 y redirige datos desde y hacia el localhost


Sé que es una publicación un poco vieja. Pero mi solución podría ayudar a alguien por lo menos unos minutos. Si tiene más de un enlaces en el sitio web que está ejecutando, elimínelo. Tener solo uno con dirección IP: Todos los no asignados y HostName establecido en blanco


Si está utilizando el servidor web incorporado de Visual Studio (IIS Express), localhost se asigna de forma predeterminada; para habilitar 127.0.0.1:

1) En la ruta de acceso:% USERPROFILE% / Documents / IISExpress / config

2) Ubique el archivo de configuración: applicationhost.config

3) - abrir el archivo de configuración en el editor (uso Notepad ++)

4) Busque el puerto del sitio, por ejemplo, si la url es típicamente localhost: 57578, busque "57578" y debe encontrar:

<binding protocol="http" bindingInformation="*:57578:localhost" />

5) Cambie esta entrada a:

<binding protocol="http" bindingInformation="*:57578:*" />

6) Guardar y salir, reiniciar el sitio web.

Nota: Deberá repetir este proceso cada vez que cree un nuevo directorio virtual (cambiando el número de puerto Project / Properties / Web / Project Url), que crea una nueva entrada en el archivo applicationhost.config.


Vaya a la carpeta .vs / config y abra applicationhost.config y cambie

<bindings> <binding protocol="http" bindingInformation="*:58670:localhost" /> </bindings>

a 127.0.0.1

<bindings> <binding protocol="http" bindingInformation="*:58670:127.0.0.1" /> </bindings>

Y cambie esto también, para ejecutarlo directamente usando 127.0.0.1