2008-11-04 3 views
4

에 어떻게 우리는로드 밸런서를 사용하여 웹 서버의 몇 가지있다. 컴퓨터는 포트 81에서 IIS6을 실행합니다. 외부에서는 포트 80을 사용하여 사이트에 액세스 할 수 있습니다. 외부 이름과 컴퓨터 이름이 다릅니다.WCF - 설정

우리의 Web.config의

System.ServiceModel.EndpointNotFoundException: The message with To '<url>' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree. 

관련 부분을 얻고있는 것은 :

<endpoint binding="ws2007HttpBinding" bindingConfiguration="MyServiceBinding" 
    contract="MyService.IMyService" listenUriMode="Explicit" /> 

우리는 listenUri를 추가했지만, 그것은 우리의 문제를 해결하지 않았다.

아이디어가 있으십니까? 특정 부하 분산

답변

6
[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)] 

이 속성을 사용하면 문제가 해결됩니다. 문제의

+0

에 대한 자세한 설명은 여기에 있습니다 http://stackoverflow.com/questions/274984/wcf-webservice-behind-public-reverse-proxy/947276#947276 –

1

무엇입니까? F5 BIG-IP를 사용하면 상당히 쉽게 작동하지만 우리는 nlb에 대해 동일한 포트와 (상대적) uri를 개별 시스템으로 사용하고있었습니다. 그래서 우리는 선택한 시스템을 개별 시스템으로 간주 할 수 있습니다. 물론 각 시스템의 이름은 다르지만이 설정을 사용하면 호스트를 스푸핑하여 개별 서버를 테스트 할 수 있습니다. 예를 들어 HOSTS 파일을 편집하여 [your farm name]을 [test server IP]로 지정할 수 있습니다.

우리가 가진 가장 큰 고통은 SSL이었다; TransportWithMessageCredential 보안을 사용하여 WCF는 인바운드 HTTP 연결을 거부합니다. 따라서 nlb와 서버 노드 사이에서 다시 암호화하도록 nlb를 설정해야합니다.

우리가 가진 유일한 다른 문제는 IIS 내부에서 WCF를 호스팅하는 것이었고 WCF는 http를 통해 (https를 초과하는 경우) 의도 한 사이트 (IIS는 괜찮 았지만)를 올바르게 식별 할 수 없었습니다. 이 문제를 해결하기 위해 간단히 http를 완전히 무시한 사용자 지정 팩토리 (https에서만 수신)를 작성했습니다.이 템플릿은 TransportWithMessageCredential 요구 사항과 깔끔하게 관련되어 있으므로 걱정하지 않았습니다.

당신이 (IP/호스트 헤더/등) 표준 포트에서 호스팅이 아니라 다른 사이트로 더 많은 기쁨을 얻을 것인지 궁금.

관련 문제