Search

'System.ServiceModel.DomainServices.Client.DomainOperationException'에 해당되는 글 1건

  1. 2010.06.14 .Net Ria Service + IIS6 + Silverlight 4 Troubleshooting!! 2

.Net Ria Service + IIS6 + Silverlight 4 Troubleshooting!!

RIA 2010. 6. 14. 11:31 Posted by 알 수 없는 사용자



기쁜 마음으로 아주 오래간만에 포스팅을 합니다.
문제는 간단한 거였는데 상당히 돌아온 느낌이 드는군요.
하지만 그 와중에 많은 글들을 보았고 또 많은 것들을 배웠습니다.

힘들었던 하루지만 돌이켜 보면 재밌네요. :)

문제)

Windows 7 x64, IIS7 에서 개발을 했고 Windows 2003 Server R2, IIS6 에 배포하려했습니다.
Visual Studio 2010 Ultimate, MS-SQL 2005

실버라이트 4 와 .Net Ria Service (이하 리아서비스)를 이용하여 프로젝트를 만들었습니다.
개발 할 때는 전혀 문제가 없었는데 막상 배포하려고 하면서 문제가 발생하기 시작했습니다.

배포 하면서 몇가지 의문이 생겼습니다.
1. 리아서비스가 IIS 6에서도 돌아갈까..
 - WCF Ria Service 는 IIS6, IIS7을 지원한다고 합니다. 문제 없이 돌아가죠.

2. .NET Framework 4가 필요한가?
 - 프레임 워크 4가 필요하더군요.
 어떤 글에서는 3.0도 돌아간다는 글을 본것 같은데 문제는 제가 Linq 쿼리를 상당히 많이 사용했고, 
 또 실버라이트 4 비지니스 어플리케이션으로 개발하다 보니 프레임워크 4가 필요했습니다.

...

서버에 프레임워크 4를 설치했습니다.
WCF Ria Service를 설치 하기에 앞서 Silverlight SDK 를 먼저 설치했습니다.
파일 이름은 "RiaServices.msi" 군요.. 이놈이 요구하는게 Silverlight SDK 였습니다.

배포 환경이 만들어 졌겠다 싶어서 얼른 실버라이트 웹 프로젝트에서 필요한것만 추려냈습니다.


Bin - 꼭있어야겠죠.. 빌드 본이니.
ClientBin - Silverlight xap(잽) 파일이 존재하는곳이죠.
*.js - 전 어차피 javascript를 안쓰기때문에 필요없지만 혹시나 필요하게 될까봐. 그냥 두었습니다.
web.config - 문제의 주범이였습니다.

나머지 두개의 .xml 파일은 WCF  서비스를 할때에 필요했던거라 포함시켜봤는데 테스트는 안해봤습니다.
이 두놈이 도메인서비스에서도 필요할지는 잘 모르겠네요.

IIS 에 잘 모셔두고 MIME Type과 권한 설정, Asp.net Framework 변경을 마치고 테스트를 했습니다.
뚜둥..~

Load Error
System.ServiceModel.DomainServices.Client.DomainOperationException : Load operation failed for query 
'GetTbl_Curriculum'. Remote server returned an error ---> 







해결)

처음 보는 에러라서 적잖게 당황했습니다.
뭘 잘못했지..
팀아저씨의 블로그에서 좋은 글을 발견했습니다.

Deploying your Silverlight and WCF RIA Services application

영어라서 압박이 있었는데 처음보는 어셈블리가 보였습니다.
System.Web.Ria 이분 수소문 해봤습니다.
알고보니 Visual Studio 2010 RC 시절에 잠깐 등장했던 분으로 이름이 바꼈네요.


에서 System.Web.Ria 가 아니라. 아래 세분을 위와 같이 해주시면 되겠습니다.


덤으로 이분도 추가해주시길.. System.ComponentModel.DataAnnotations.dll
Copy Local = True 로 하니 빌드시 Bin 폴더로 쏙 들어가네요.
팀 아저씨 글중에 "msiexec /i RiaService.msi SERVER=TRUE"라는게 있는데 보아하니 Ria Service를 설치하는거 같은데요.. 아직까지 뭔지 모르겠습니다.
해봤는데 안되고 해서 패스했습니다.
사실 아까 Silverlight SDK 설치 후에 RiaServices.msi 파일 설치했으니깐요.. 뭐 같은거라 봅니다만..

팀아저씨 글은 어려웠습니다. 뭐 저리 수정해야될게 많은가.. 보아하니 비슷하기도 하고 예전꺼라서 틀린것도 있고해서
web.config 파일은 수정하지 않았습니다.

뭐 이제 리아서비스 관련 dll도 추가했으니 되었겠다. 싶어서 테스트를 해봤습니다.

Load Error
System.ServiceModel.DomainServices.Client.DomainOperationException : Load operation failed for query 
'GetTbl_Curriculum'. Remote server returned an error ---> ..


사실 이 에러는 생각해보니 오늘 하루 백번은 본것 같습니다.

 WCF 서비스를 만들때 우리들은 Myservice.svc ".svc" 확장자를 가진분을 보았을 겁니다.
리아서비스는 왜 이분이 안보일까요.!!

에러내용도 도메인 서비스에서 쿼리를 못가져오겠다고 하니깐.. 이분한테 문제가 있을것 같았습니다.
저의 예상은 그대로 적중!

다들 아시는 내용인가요..저만 몰랐던 건가요.
도메인 서비스의 .svc 파일은 런타임때 생성이 된다고 합니다.
이분을 찾아야했습니다.

분명히 엔드포인트가 있을것이야!!!

그분의 엔드포인트는 이런식으로 - -; 찾아갈 수 있었습니다.
1. SolKongpill - 제 솔루션 이름
2. localhost:1234 - 제 도메인 이름
3. kongpillDomainService - 제 도메인 서비스 이름.
 - 비지니스 프로젝트를 만들어보시면 알겠지만 도메인 서비스는 주로 웹 프로젝트 하위의 Services 폴더 에 만듭니다.
 - 꼭 그러실 필요는 없으나 알아두세요.

이분을 조합해서 만듭니다.

http://localhost:1234/SolKongpill-Web-Services-kongpillDomainServices.svc

조잡한가요.. 아니면 슬러쉬를 그냥 '-' 로 대채한 느낌일까요..
아무튼 이게 답니다. 이분을 브라우저 주소에 옮겨보니..


인증구성이 어쩌구 합니다.

이분께서 잘못되었으니 쿼리를 찾을 수없다 뭐시다 예외가 나왔던 겁니다.

IIS / 제가 만든 웹서비스 / 속성 / 인증 / 편집 에 가봤습니다.
"익명 엑세스 허용", "윈도우 통합 인증" 두개가 체크 되어있네요.

"익명 엑세스 허용"만 하고 "통합 인증"은 체크 해제 합니다.
web.config 파일도 수정해주셔야합니다.

   ====>



 
윈도우 인증으로 바꿔주셔야합니다.

"IIS 6 재시작"


반가운 화면입니다. 
실제로 실버라이트 페이지도 문제 없이 돌아가네요.
문제의 원인이 무엇이고 그 문제에 대한 예외 메세지를 보니 의외로 쉽게 처리할 수 있었던 문제였네요.

참고로 IIS 의 특정 폴더 하위에 개발하신 프로젝트를 두셔야 될 경우는 꼭 
가상웹사이트를 만들어서 사용하시길 바랍니다. 그냥 폴더 하위로 링크를 걸어두니깐 오류가 나더군요.