2009-03-24 5 views
3

Ich entwickle eine Lösung für die Übertragung von Daten von Android-Handy auf den Server (geschrieben in C# /. NET).Wie WebHttp-Verbindung in WCF aktivieren?

Ich erstellte einen WCF-Dienst und testen mit Emulator alles hat gut funktioniert. Dann, wenn ich versuchte, von Handy einzuloggen (verbunden mit nach Hause WiFi-Netzwerk) bekam ich die folgende Ausnahmemeldung:

org.apache.http.conn.HttpHostConnectException: Anschluss an http://192.168.1.5:8000 verweigert

I Ich würde es sehr zu schätzen wissen, wenn jemand die Konfigurationsdatei und die Schnittstelle anschauen und Ratschläge geben könnte, wie man die Verbindung aktiviert.

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> 

Schnittstelle:

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

Service-Implementierung:

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; 
    } 
} 

Antwort

0

Um Ihren Dienst zu verbinden, muss es auf einem öffentlichen gehostet werden Webserver. Es sieht so aus, als ob die von Ihnen verwendete Adresse 192.168.1.5:8000 eine Heimnetzwerkadresse ist, auf die von außen nicht zugegriffen werden kann (ein Telefon).

+0

ich es auf einem lokalen Netzwerk getestet, so glaube ich, es sollte zugänglich sein –

+0

Wie hast du es getestet? 192.168.1.5 ist nicht die öffentliche IP-Adresse Ihres Computers. Wenn Sie auf eine Website wie "whatismyip.com" gehen, sehen Sie Ihre öffentliche IP-Adresse. Um Ihren Computer von der Außenwelt zu treffen, müssen Sie die öffentliche IP-Adresse verwenden (und Sie müssen möglicherweise mit Ihrem ISP sprechen). –

0

, wenn Sie Vista OS verwenden, müssen Sie die Adresse in Ihrer Firewall hinzufügen

netsh http hinzufügen urlacl url = http://+:8000/ user = DOMAIN \ user

0

Verwenden Sie Ihre LAN-IP Ihres Emulator mit Web verbinden Service ,, Für EX: http://192.168.1.78:8080/webservice

Aber Ihre LAN-Verbindung muss Goto sein aktivieren: Systemsteuerung \ Netzwerk und Internet \ Netzwerkverbindungen

Verwandte Themen