LAN에서 정상적으로 작동하는 WCF 서비스가 있지만 서비스 참조 외부에서 액세스하려고 할 때 실패합니다.WCF가 IP 주소 대신 컴퓨터 이름을 사용하고 있습니다. 해결할 수 없습니다.
내 WCF 서비스는 도메인이없는 고정 IP를 사용하는 win2k3 상자에서 호스팅됩니다.
LAN에서 정상적으로 작동하는 WCF 서비스가 있지만 서비스 참조 외부에서 액세스하려고 할 때 실패합니다.WCF가 IP 주소 대신 컴퓨터 이름을 사용하고 있습니다. 해결할 수 없습니다.
내 WCF 서비스는 도메인이없는 고정 IP를 사용하는 win2k3 상자에서 호스팅됩니다.
일부 파기 후 이에 대한 답변을 찾았습니다. 여기 누군가가 다른 사람을 구할 수있어 귀찮아한다는 것을 알았습니다. 이건 내 서비스 참조 작업을 할 수있을 정도로 충분한로 사용
<endpoint
address="http://xx.xx.xx.xx/ServiceApp/Service.svc"
binding="basicHttpBinding" contract="IService">
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://xx.xx.xx.xx/ServiceApp/" />
</baseAddresses>
</host>
하지만 디스코 파일이 시작 :
1. ) 기본 IP의과 같이 주소와 호스트 이름을 추가 엔드 포인트 주소 &에 IP 추가 ip 대신 컴퓨터 이름으로 반환됩니다 (.NET 4.0으로 업데이트 한 후 였다고 생각합니다).
2.) 도메인 이름 (www.myDomain.com)이 있으면 IIS의 호스트 헤더에 추가하십시오.
3) 그러나 자신의 호스트 파일)
4) 최고의 솔루션이를 추가 할 모든 클라이언트를 얻기 위해 항상 (클라이언트 호스트 파일에 가능한 한 쉽게 수정을 IP 주소 & 컴퓨터 이름을 추가 여기 "Timetheos"사후에 따라, ServiceHosts 팩토리 속성 구현하는 것이었다 발견 : 나는 로컬 & 디버그 내 서비스 라이브러리를 개발하고 테스트 한 다음에 서비스를 배포 서비스 응용 프로그램을 사용할 수 있습니다로 http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c7fd51a2-773e-41d4-95a0-244e925597fe
이 나를 위해 잘 작동을 내 dev 서버에 저장하고 게시 한 후에 구성 파일을 변경할 필요가 없었습니다.
이 전체 과정은 완전히 악몽이었습니다. 나는 누군가에게 위와 같은 상황에 있고 더 이상 위의 사항에 대한 정보가 필요하다면 연락을 원하지 않을 것입니다!
안녕 baileyswalk, IP 주소로 변경하면 사용자 이름과 암호를 묻습니다. 연결하지 않으면 –
이것은 나를 위해 일한 것입니다. 구성 파일에서
< serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel >
false로 설정하면 컴퓨터 이름이 이상하게 변경되었습니다.
multipleSiteBindingsEnabled="true"
내가해야하는대로이 작업을 수행해야하는 것으로 보입니다.
이 문제는 Windows Server 2012에서 저에게 유용합니다. – skjoshi
고맙습니다. 문제 –
그러면 서비스 종점에 상대 서비스 주소가 있어야합니다. –
이렇게 서비스 끝점과 httpgeturl을 설정하십시오.
<services>
<service behaviorConfiguration="serviceBehaviour" name="Demo.Service.MultiEndPointsService">
<endpoint address="http://192.168.1.2/Demo.Service/MultiEndPointsService.svc/basic" binding="basicHttpBinding" bindingConfiguration="basicBinding" contract="Demo.Service.MultiEndPointsService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehaviour">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://192.168.1.2/Demo.Service/MultiEndPointsService.svc/basic"/>
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
HTTP 요청에서 Host 헤더를 다시 사용하는 방법을 찾고있었습니다. 제 생각에는 이것은 생산 단계에서 개발 단계에서 작동해야합니다.
<behaviors>
<serviceBehaviors>
<behavior name="...">
...
<useRequestHeadersForMetadataAddress />
</behavior>
</serviceBehaviors>
</behaviors>
WSDL에 엔드 포인트는 클라이언트가 액세스 할 수있는 경우이 방법이 모든 관련된 WSDL/XSD 자원은 동일한 기본 URL에 액세스 할 수 보장 : 그것은 밝혀
는만큼 간단합니다.
고맙습니다. 저에게 도움이되었습니다. –
은 당신과 같이 기본 URL에 LocalHost를 또는 컴퓨터 이름의 자리에 별표 * (와일드 카드)를 사용할 수 있습니다 :
<add baseAddress="net.tcp://*:4502/WxWcfService_01" />
그것을 로컬로 작동하고 WSDL 포트 80 웹 페이지에 표시되는 경우, 서비스가 다른 포트를 사용할 가능성이 있으며 라우터 방화벽이 해당 포트에 대한 외부 액세스를 차단하고 있습니까? – Tod
방화벽에 문제가 없지만 LAN을 통해 컴퓨터 이름을 확인할 수 없지만 지금 해결책이 있습니다. 어쨌든 Thnx. – baileyswalk