2011-02-15 1 views
0

J'ai un service RIA (CustomDomainService), qui est composé de quelques méthodes nécessitant une authentification. L'authentification est fournie par un service d'authentification (AuthenticationDomainService). Tout fonctionne à partir de Silverlight, qui est le client principal.RIA AuthenticationDomainService et CustomDomainService exposés via SOAP

Je dois maintenant exposer quelques-unes des méthodes existantes via SOAP. D'où j'ai changé ma configuration web.config pour permettre l'accès via SOAP:

<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> 

Dans un formulaire d'application Windows que j'ai construit à des fins de test, j'ai ajouté la référence au WebService SOAP.

Je peux vous connecter au service d'authentification sans aucune erreur, mais je reçois encore « Accès refusé » pour toute méthode Web invokation sur le service réel:

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); 

Je lis dans ce que le service d'authentification devrait renvoyer un certain les cookies et ceux-ci devraient être utilisés dans le service métier réel. Cependant, après l'appel de Login, je ne vois aucun cookie dans auth.CookieContainer. De plus, je n'ai aucune propriété InnerChannel, que je pourrais utiliser pour récupérer le cookie assigné.

Est-ce que quelqu'un pourrait me signaler ce que je fais mal?

Merci à l'avance, Cheers, G.

Répondre

0

Ok, j'ai trouvé ce que la question est.

J'avais ajouté les deux services comme "anciens" services Web. Je les ai supprimés et ajouté à nouveau, cette fois en tant que références de service standard. Après cela, j'ai pu obtenir un "myServiceSoapClient" et un "myAuthSoapClient", qui ont une propriété InnerChannel, c'est ce dont j'avais besoin pour récupérer le cookie de jeton de sécurité. En obtenant le cookie du service d'authentification (après l'authentification) et en le réglant dans le deuxième service (le service réel), j'ai pu accéder à toutes les méthodes auxquelles j'étais censé accéder.

Cheers, Gianluca.

Questions connexes