2011-02-15 1 views
0

인증이 필요한 몇 가지 방법으로 구성된 RIA 서비스 (CustomDomainService)가 있습니다. 인증은 인증 서비스 (AuthenticationDomainService)에 의해 제공됩니다. 모든 것은 주요 클라이언트 인 Silverlight에서 작동합니다.SOAP를 통해 노출 된 RIA AuthenticationDomainService 및 CustomDomainService

SOAP를 통해 기존의 몇 가지 메소드를 노출해야합니다. 따라서 나는 SOAP를 통해 액세스 할 수 있도록 내 Web.config의 구성을 변경 :

<domainServices> 
    <endpoints> 
    <add name="soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, 
          Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, 
          Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </endpoints> 
</domainServices> 

Windows Form에 응용 프로그램에서 내가 테스트 목적으로 구축 한, I는 SOAP 웹 서비스에 대한 참조를 추가했습니다.

내가 어떤 오류없이 인증 서비스에 로그인 할 수 있습니다,하지만 난 여전히 실제 서비스에 모든 웹 메소드 invokation은 "액세스가 거부되었습니다"얻을 : 나는 인증 서비스 일부를 반환하도록 주위 읽어

var auth = new myAuth.AuthenticationDomainService(); 
auth.Login("username", "password", true, false, ""); 
var svc = new myService.myDomainService(); 
var res = svc.GetDataByCustomerCode("", DateTime.Now, true, DateTime.Now, true); 
쿠키는 실제 비즈니스 서비스에서 사용해야합니다. 그러나 로그인이 호출 된 후 auth.CookieContainer에 쿠키가 표시되지 않습니다. 또한 할당 된 쿠키를 얻기 위해 사용할 수있는 InnerChannel 속성이 없습니다.

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까? 사전에

감사합니다, 건배, G.

답변

0

좋아, 나는 문제가 무엇인지 발견했습니다.

두 웹 서비스를 "이전"웹 서비스로 추가했습니다. 나는 그들을 제거하고 다시 이번에 표준 서비스 참조로 추가했다.

그런 다음 보안 토큰 쿠키를 검색하는 데 필요한 InnerChannel 속성이있는 "myServiceSoapClient"및 "myAuthSoapClient"를 얻을 수있었습니다.

auth 서비스 (인증 후)에서 쿠키를 가져 와서 두 번째 서비스 (실제 서비스)에 설정하면 액세스해야하는 모든 방법에 액세스 할 수있었습니다.

환호, Gianluca.