Pregunta

Estoy desarrollando una solución para la transferencia de datos desde el teléfono androide al servidor (escrito en C # /. NET).

He creado un servicio WCF y pruebas con el emulador todo funcionaba bien. Luego, cuando traté de iniciar sesión desde el teléfono móvil (conectado a la red inalámbrica doméstica) Tengo el siguiente mensaje de excepción:

  

org.apache.http.conn.HttpHostConnectException: Conexión a http://192.168.1.5:8000 negado

Realmente agradecería si anyonecould dar un vistazo al archivo de configuración y la interfaz y dar algún consejo sobre cómo activar la conexión.

web.config:

<configuration>
  <system.web>
    <compilation debug="true"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="DefaultBinding"
                 allowCookies="true"
                 bypassProxyOnLocal="true" />
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="RESTFriendly">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="RESTServer.LoginService">
        <endpoint address=""
                  behaviorConfiguration="RESTFriendly"
                  binding="webHttpBinding"
                  bindingConfiguration="DefaultBinding"
                  contract="RESTServer.ILoginService" />
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>
</configuration>

Interfaz:

[ServiceContract()]
public interface ILoginService
{
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/username={username}&password={password}")]
    [OperationContract]
    Message Login(string username, string password);
}

aplicación de servicio:

public class LoginService : ILoginService
{
    public Message Login(string username, string password)
    {
        Message message = new Message();
        SQLWorks sqlWorks = new SQLWorks();
        string strSession = sqlWorks.Login(username, password);
        string strMessage;
        message.Session = strSession;
        if(strSession == "")
        {
            strMessage = "Login failed! Please check your username/password!";
        }
        else
        {
            strMessage = "Login Successful";
        }
        message.ErrorMessage = strMessage;
        return message;
    }
}
¿Fue útil?

Solución

Con el fin de conectarse a su servicio, que tiene que ser alojado en un servidor web público. Parece que la dirección que está utilizando 192.168.1.5:8000 es una dirección de red doméstica, que no es accesible desde el exterior (un teléfono).

Otros consejos

si está utilizando el sistema operativo Vista, hay que añadir la dirección en el servidor de seguridad

netsh http add url = urlacl http: // +: 8000 / usuario = DOMINIO \ usuario

Utilice su IP LAN para conectar el emulador con el servicio web ,, Por EX: http://192.168.1.78: 8080 / servicio web

Sin embargo, su conexión de área local debe permitir Goto: Panel de control \ Conexiones de red e Internet \ Conexiones de red

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top