Cómo permitir la conexión webHttp en WCF?
-
21-08-2019 - |
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;
}
}
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