2011-04-04 4 views
0

Je souhaite utiliser l'utilisateur Windows actuel pour mon application Silverlight. En utilisant une autre application, je peux simplement utiliser WindowsIdentity, mais il semble que je devrais utiliser ServiceSecurityContext.Current avec WCF. Mon problème est que le .Current sort comme null.Utilisation de ServiceSecurityContext.Current avec WCF/Silverlight 4

Apparemment, c'est à cause du mode de transport que j'utilise. Mon problème est que Silverlight ne peut pas utiliser TransportWithMessageCredential apparemment sans vouloir utiliser Https.

Alors j'essaie d'utiliser TransportWithMessageCredential et mon service commence à dire qu'il attend Https, mais reçoit Http. J'ai regardé autour du web et il me semble que j'ai besoin d'utiliser wsHttpBinding (qui n'est pas disponible avec Silverlight) ou une forme de politique d'accès pour utiliser Https avec Http (qui ne semble pas fonctionner).

Sûrement il y a un moyen plus facile de le faire?

Répondre

1

j'ai réussi à résoudre ce problème en faisant quelques petites choses:

1) <authentication mode="Windows"/> dans le fichier web.config

2) <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> dans le fichier web.config. aspnetCompatibilityEnabled est l'important ici.

3) [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] attribut sur ma classe de service WCF.

4) Utilisez HttpContext.Current.User.Identity as WindowsIdentity pour obtenir l'identité des fenêtres.

+0

Est-il possible de le faire sans aspNetCompatibilityEnabled = "true" – TheWommies

Questions connexes