2013-02-17 1 views
0

저는 최근에 Silverlight 웹 사이트를 배포하고 있으며, 벌써 꽤 끔찍한 버그를 발견했습니다."www"는 내 끝점 바인딩에 어떤 영향을 줍니까?

내 Silverlight 응용 프로그램은 동일한 웹 사이트의 웹 응용 프로그램에서 호스팅되는 wcf 서비스에 5 개의 바인딩을 가지고 있습니다. 내 웹 사이트가 www.test.com이라고 가정 해 봅시다. 여기에 실버 라이트 응용 프로그램의 ServiceReferences.ClientConfig에서 바인딩은 다음과 같습니다

그래서
<client> 
    <endpoint address="http://www.test.com/MyWebService/Service1.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService1" 
     contract="Service1.IService1" name="CustomBinding_IService1" /> 
    <endpoint address="http://www.test.com/MyWebService/Service2.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService2" 
     contract="Service2.IService2" name="CustomBinding_IService2" /> 
    <endpoint address="http://www.test.com/MyWebService/Service3.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService3" 
     contract="Service3.IService3" name="CustomBinding_IService3" /> 
    <endpoint address="http://www.test.com/MyWebService/Service4.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService4" 
     contract="Service4.IService4" name="CustomBinding_IService4" /> 
    <endpoint address="http://www.test.com/MyWebService/Service5.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService5" 
     contract="Service5.IService5" name="CustomBinding_IService5" /> 
</client> 

내 문제입니다 내 IIS 웹 사이트의 루트 디렉토리에서 호스팅 기본 영문 페이지에서 실버 라이트 응용 프로그램을로드의 CONNEXIONS에만 작동 URL 주소에 test.com을 입력하고 www.test.com을 입력하지 않은 경우 실패하지는 않지만 서비스를 통해 추출해야하는 데이터는 표시되지 않으며 자격 증명으로 연결할 수 없습니다. (내 서비스 중 하나가 인증에 사용되기 때문에) 을 제거하여 내 앱의 ServiceReferences.ClientConfig 값을 변경하려고 시도했지만 상황이 1 비트 변경되지 않습니다. www가 켜져있을 때가 아니라 URL에 www가 없어도 잘 연결됩니다.

답변

0

글쎄, this lovely post 덕분에이 문제를 극복해야합니다. 링크가 죽어 버린 경우를 대비하여 여기에서해야 할 일을 설명하겠습니다.

내가해야 할 일을했을 모든 내 실버 코드의 각 서비스 클라이언트의 각 인스턴스를 변경하려면 :이에

Service.IService proxy = new Service.ServiceClient(); 

:

Uri servUri = new Uri("../MyWebService/Service.svc", UriKind.Relative); 
EndpointAddress servAddr = new EndpointAddress(servUri); 
Service.IService proxy = new Service.ServiceClient("CustomBinding_IService", servAddr); 

으로이 블로그 게시물에서 "으로 설명했다. . "Silverlight 응용 프로그램은 (일반적으로) ClientBin 폴더에 있기 때문에 필요합니다.

그리고 이것은 나를 위해 트릭을했습니다!

관련 문제