2010-08-10 2 views
2

Silverlight 앱을 WCF 서비스에 연결할 때 다음과 같은 오류가 발생합니다. 나는이 wcf를 자체 호스트 서비스로 호스트한다.Silverlight with WCF의 도메인 간 정책 오류

URI 'http://lmr-hero/iSponsorWebSite/projectService.svc/basic'에 요청하는 동안 오류가 발생했습니다. 이것은 적절한 크로스 도메인 정책이없는 크로스 도메인 방식으로 서비스에 액세스하려고 시도하거나 SOAP 서비스에 적합하지 않은 정책으로 인해 발생할 수 있습니다. 도메인 간 정책 파일을 게시하고 SOAP 관련 HTTP 헤더를 보낼 수 있도록하려면 서비스 소유자에게 문의해야 할 수 있습니다. 이 오류는 InternalsVisibleToAttribute 특성을 사용하지 않고 웹 서비스 프록시에서 내부 형식을 사용하는 경우에도 발생할 수 있습니다. 자세한 내용은 내부 예외를 참조하십시오.

이 오류의 가능한 원인은 무엇입니까?

+0

서비스가 호스팅되는 곳은 어디입니까? – Siege898

+0

실제로 처음에는 자체 호스트 서비스로 호스팅했습니다. 하지만 자체 호스팅 서비스로 호스팅 할 때 두 개의 XML 파일 (clientaccesspolicy.xml 및 crossdomain.xml)을 넣을 위치를 찾을 수 없기 때문에 IIS 서버에서 호스팅하고이 두 xml을 'C : \ Inetpub \ wwwroot '. 그런 다음 완벽하게 작동했습니다. 모두에게 지원을위한 thx! –

+0

로컬 컴퓨터에서 잘 작동합니다. 하지만 IIS에서 WCF를 배포 한 후 작동하지 않습니다. 그 같은 오류 던지고. crossdomain.xml을 열려고 할 때 서버에서 열지 않습니다. '지정되지 않은 오류'오류 처리 리소스 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'가 표시됩니다. ' – user270014

답변

6

Silverlight 응용 프로그램이 서비스와 동일한 도메인에서 호스팅되지 않은 경우 서비스를 호스팅하는 서버에 clientaccesspolicy.xml 또는 crossdomain.xml 파일을 배치해야합니다. http://msdn.microsoft.com/en-us/library/cc197955%28VS.95%29.aspx

+0

나는 두 개의 XML 파일을 모두'C : \ Inetpub \ wwwroot '에 넣었습니다. thx 지원 : D –

+0

내 Silverlight 응용 프로그램과 WCF 서비스가 모두 ASP.NET 개발 서버 (즉, IIS에서 호스팅되지 않음)가있는 Visual Studio에서 호스팅되는 경우이 문제가 발생했습니다. 이 문제를 해결하기 위해 WCF 호스트 웹 사이트의 가상 경로를 /로 변경해야했습니다. 이유는 Silverlight가 서비스를 호스팅하는 도메인의 루트에서 clientaccesspolicy.xml을 찾기 때문입니다. 가상 경로를 변경하려면 웹 사이트를 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오. –

+0

로컬 컴퓨터에서 잘 작동합니다. 하지만 IIS에서 WCF를 배포 한 후 작동하지 않습니다. 그 같은 오류 던지고. crossdomain.xml을 열려고 할 때 서버에서 열지 않습니다. '지정되지 않은 오류'오류 처리 리소스 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'가 표시됩니다. ' – user270014

2

브라우저에서 .svc 파일을 마우스 오른쪽 버튼으로 클릭하고보기를 클릭하십시오. 먼저 호스트되고 올바르게 실행되고 있는지 확인하십시오. 그것은 당신에게 좋은 시작 장소를 줄 것입니다.

0

당신이 웹 서비스를 소비하는 실버 라이트를 사용할 때 실버 라이트에 올바르게 WCF 웹 서비스를 설정하는 것이주의 :

은 자세한 내용은이 링크를 참조하십시오. 콘솔 모드 클라이언트와 달리 Silverlight에서는 솔루션에 WCF New Item을 만들 수는 없지만 Silverlight 솔루션의 .Web 부분에서 마우스 오른쪽 단추로 "Silverlight 사용 가능 WCF 서비스"라는 새 항목 추가를 클릭해야합니다 ". 이제 Silverlight app 폴더로 이동하여 Service Reference를 추가하면이 런타임 오류가 발생하지 않습니다. 이렇게하면 원래 포스터가 참조하는 런타임 오류를 피할 수 있습니다.