WCF에서 WebHTTP 연결을 활성화하는 방법은 무엇입니까?
-
21-08-2019 - |
문제
Android 휴대 전화에서 서버로 데이터를 전송하기위한 솔루션을 개발 중입니다 (C#/. Net으로 작성).
에뮬레이터로 WCF 서비스와 테스트를 만들었습니다. 그런 다음 휴대폰에서 로그인하려고하면 (홈 Wi -Fi 네트워크에 연결) 다음과 같은 예외 메시지가 표시되었습니다.
org.apache.http.conn.httphostconnectexception : 연결 http://192.168.1.5:8000 거부
AnyoneC가 구성 파일과 인터페이스를 살펴보고 연결을 활성화하는 방법에 대한 조언을 제공해야한다면 정말 감사합니다.
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;
}
}
해결책
서비스에 연결하려면 공개 웹 서버에서 호스팅해야합니다. 192.168.1.5:8000을 사용하는 주소는 외부 세계 (전화)에서 액세스 할 수없는 홈 네트워크 주소 인 것 같습니다.
다른 팁
Vista OS를 사용하는 경우 방화벽에 주소를 추가해야합니다.
netsh http add urlacl url =http : //+: 8000/ user = domain user
LAN IP를 사용하여 에뮬레이터를 웹 서비스와 연결하십시오. http://192.168.1.78:8080/webservice
그러나 로컬 영역 연결이 활성화되어 있어야합니다. GOTO : 제어판 네트워크 및 인터넷 네트워크 연결
제휴하지 않습니다 StackOverflow