Как включить соединение webHttp в WCF?
-
21-08-2019 - |
Вопрос
Я разрабатываю решение для передачи данных с телефона Android на сервер (написано на C#/.NET).
Я создал службу WCF и протестировал ее с помощью эмулятора, все работало нормально.Затем, когда я попытался войти в систему с мобильного телефона (подключенного к домашней сети Wi-Fi), я получил следующее сообщение об исключении:
org.apache.http.conn.HttpHostConnectException:Подключение к http://192.168.1.5:8000 отказался
Я был бы очень признателен, если бы кто-нибудь мог взглянуть на файл конфигурации и интерфейс и дать совет о том, как включить соединение.
веб.конфигурация:
<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;
}
}
Решение
Чтобы подключиться к вашему сервису, он должен быть размещен на общедоступном веб-сервере.Похоже, используемый вами адрес 192.168.1.5:8000 — это адрес домашней сети, недоступный из внешнего мира (телефона).
Другие советы
если вы используете ОС Vista, вам необходимо добавить адрес в брандмауэр
netsh http добавить URL-адрес =http://+:8000/ пользователь=ДОМЕН\пользователь
Используйте IP-адрес локальной сети для подключения эмулятора к веб-сервису. Для EX: http://192.168.1.78:8080/вебсервис
Но ваше локальное соединение должно быть включено Goto:Панель управления\Сеть и Интернет\Сетевые подключения