Как включить соединение webHttp в WCF? - PullRequest
3 голосов
/ 24 марта 2009

Я разрабатываю решение для передачи данных с телефона Android на сервер (написано в C # /. NET).

Я создал службу WCF и тестировал с эмулятором, все работало нормально. Затем, когда я попытался войти с мобильного телефона (подключенного к домашней сети Wi-Fi), я получил следующее сообщение об исключении:

org.apache.http.conn.HttpHostConnectException: подключение к http://192.168.1.5:8000 отказано

Я был бы очень признателен, если бы кто-нибудь мог взглянуть на файл конфигурации и интерфейс и дать совет о том, как включить соединение.

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>

Интерфейс:

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

Реализация сервиса:

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

Ответы [ 3 ]

0 голосов
/ 24 марта 2009

если вы используете ОС Vista, вы должны добавить адрес в брандмауэр

netsh http add urlacl url = http://+:8000/ user = DOMAIN \ user

0 голосов
/ 09 октября 2011

Используйте ваш LAN IP для подключения вашего эмулятора с веб-службой ,, Например: http://192.168.1.78:8080/webservice

Но подключение по локальной сети должно быть включено Перейти к: Панель управления \ Сеть и Интернет \ Сетевые подключения

0 голосов
/ 24 марта 2009

Чтобы подключиться к вашему сервису, он должен быть размещен на общедоступном веб-сервере. Похоже, что используемый вами адрес 192.168.1.5:8000 - это адрес домашней сети, который недоступен из внешнего мира (телефон).

...