프로그램을 작성시 DB에 직접 접근해서 Data를 받아오려고 WCF Servece를 생성하고 아래와 같은 구조로 프로그램 작성.
Silverlight App <-> WCF Service <-> Database
[문제 발생]
특정 컴퓨터에서 WCF로 접근못하는 상황발생.
[현상]
WebDeveloperHelper로 체크해보니 clientaccesspolicy.xml 파일을 호출하다 302 에러 발생.
clientaccesspolicy.xml은 WCF 접근 권한을 결정하는 파일이라 접근이 안되면 WCF로 접근이 안됨.
그리고 주소가 http://IP Address:포트번호 가 아니라 http://서버이름:포트번호 로 표시됨.
[해결]
1) WCF Project를 Publish할때 http://localhost:포트번호 로 했었는데 Http://IP Address:포트번호로 변경.
2) Silverlight App에서 Reference Service를 Update
3) ServiceReference.ClientConfig 파일에서 Endpoint의 주소가 ip혹은 ActiveDirectory명으로 변경되었는지 확인.
4) 재배포.
5) 다시 문제되는 컴퓨터에서 접속해서 정상 작동 확인.
[교훈]
개발할때 localhost가 편하다고 그냥 놔두지말고 배포전에 모든 local설정 항목을 체크하자!!
[참고]
Naver Cafe - Silverlight Korea: 쇼니팀의 My Silverlight application cannot access my service! 글 참고.