Comment activer la connexion webHttp dans WCF?
-
21-08-2019 - |
Question
Je développe une solution pour les données de transférer téléphone Android au serveur (écrit en C # /. NET).
J'ai créé un service WCF et les tests avec tout émulateur a bien fonctionné. Puis, quand j'ai essayé de vous connecter depuis un téléphone mobile (connecté à la maison réseau wifi) J'ai reçu le message d'exception suivant:
org.apache.http.conn.HttpHostConnectException: Connexion à http://192.168.1.5:8000 refusé
Je voudrais vraiment apprécier si anyonecould donner un coup d'oeil au fichier de configuration et l'interface et donner des conseils sur la façon de permettre la connexion.
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>
Interface:
[ServiceContract()]
public interface ILoginService
{
[WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/username={username}&password={password}")]
[OperationContract]
Message Login(string username, string password);
}
Mise en oeuvre du service:
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;
}
}
La solution
Pour vous connecter à votre service, il doit être hébergé sur un serveur Web public. Il ressemble à l'adresse que vous utilisez 192.168.1.5:8000 est une adresse réseau à domicile, ce qui est pas accessible depuis le monde extérieur (un téléphone).
Autres conseils
si vous utilisez OS Vista, vous devez ajouter l'adresse dans votre pare-feu
netsh http add url = http: // +: 8000 / utilisateur = DOMAIN \ user
Utilisez votre ip LAN pour connecter votre émulateur avec le service Web ,, Ex: http://192.168.1.78: 8080 / webservice
Mais votre connexion locale doit être activé pour Goto: Panneau de configuration \ Réseau et Internet \ Connexions réseau