2012-10-25 5 views
-1

저는 WCF의 초보자입니다. 그래서 정말 도움이 필요합니다.클라이언트가 서버에 연결할 수 없습니다.

나는 WCF를 사용하는 두 개의 프로그램이 있습니다. 한 대의 컴퓨터에서 실행 중이며 클라이언트가 주소 net.tcp : \ Localhost : 8001 \ MyService을 사용하여 서버 (예 : 주소 192.168.1.1)에 연결하면 모든 사항이 정상입니다. 하지만 클라이언트 주소를 으로 변경할 때 net.tcp : \ 192.168.1.1 : 8001 \ MyService 클라이언트가 서버에 연결할 수 없기 때문에 system.timeoutexception이 표시됩니다.

도움 주셔서 감사합니다.

+0

ASP.NET 개발 서버 또는 로컬 IIS 인스턴스에서 실행 중이십니까? –

+0

localhost가 특정 IP 주소가 아니라 127. *. *. * 범위로 확인됨을 기억하십시오. –

+0

그래서 무엇을 시도 했습니까? _ "서 v에 연결할 수 없음"_은 네트워크 관련 오류를 표시합니다. 주소를 ping하거나, 텔넷으로 포트를 연결하거나, 방화벽이나 라우터를 사이에 둘 수 있습니까? 기본적인 네트워크 디버깅. – CodeCaster

답변

-2

"호스트"파일에 "192.168.1.1"이 있는지 확인하십시오. 시도해보십시오.

호스트 파일

에서 찾을 수있다 "C : \ WINDOWS \ system32를 \ 드라이버 \ 등"

+1

192.168.1.1은 hosts 파일에 들어 가지 않습니다. hosts 파일은 이름 확인에 IP 주소를 제공하기위한 것입니다.호스트 파일에 IP 주소를 추가 할 필요가 없습니다 (그리고 아마도 작동하지 않을 것입니다). –

+0

문제가 dev 환경에 있다고 가정하면 "192.168.1.1"에 액세스 할 수 없습니다. 그러므로 나는 호스트 파일에 ip를 포함 시키라고 제안했다. 이것은 과거에 저에게 효과적이었습니다. –

+0

'hosts' 파일에 IP 주소를 넣으면 (해당 호스트 이름과 함께) 호스트의 IP 주소를 확인하기 위해'hosts' 파일을 사용하기 때문에 * hostname *을 통해 통신을 시도한 경우에만 의미가 있습니다 이름 (DNS가하는 것과 유사). 어떤 해상도 서비스도없이 IP 주소를 통해 기계간에 항상 통신 할 수 있으므로 IP 주소와의 통신을 가능하게하기 위해'hosts' 파일에 항목을 넣는 것은 도움이되지 않습니다. 그리고 이것이 이것이 과거에 당신을위한 실용적인 해결책으로 의심 스러웠습니다 - 당신은 다른 네트워크 관련 문제가 있었을 것입니다. –

1

당신은 방화벽에 포트에 대한 외부 액세스를 허용해야 할 수 있습니다.

localhost에서 localhost으로 통신하는 동안 이러한 요청은 루프백 어댑터에서 처리되므로 방화벽이 작동하지 않습니다.

그러나 기기의 IP 주소로 localhost에서 통신 할 때 방화벽이 처리하는 네트워크 요청을하고있는 것입니다 (물리적으로는 여전히 같은 시스템에 있더라도).

길 : 서버 쪽에서는 끝점이 localhost 또는 192.168.1.1 인 WCF 서비스를 시작할지 여부는 중요하지 않습니다.

편집
나는 당신이 localhost 또는 192.168.1.1에서 수신 여부를 중요하지 않습니다 쓴이 - 당신이 하나의 네트워크 어댑터가 가능한 경우에만 해당됩니다.

네트워크 카드가 두 개 이상 있으면 (예 : 무선 LAN이 켜져 있고 케이블을 통해 연결됨) localhost 또는 0.0.0.0은 모든 어댑터에서 서비스를 수신 대기하게 만듭니다. 192.168.1.1을 사용하면 서비스는 해당 IP 주소의 연결 만 수신합니다.

다른 네트워크 어댑터가 다른 (하위) 네트워크의 구성원이되는 경우 특히주의해야합니다.

예 : 하나의 어댑터는 192.168.1 네트워크에 연결되고 다른 어댑터는 192.168.2 네트워크에 연결됩니다. 서비스가 localhost 또는 0.0.0.0을 수신하는 경우 두 네트워크 모두에서 연결할 수 있습니다. 192.168.1.1에서만 수신 대기하면 192.168.2 네트워크에서는 사용할 수 없습니다.