2010-07-29 10 views
2

Mon application SL utilise l'authentification par fenêtre.Comment obtenir des informations sur l'utilisateur à partir de WebContext?

Lorsque l'application a commencé, Après les informations utilisateur add code à colloection:

public App() 
    { 
     InitializeComponent(); 

     // Create a WebContext and add it to the ApplicationLifetimeObjects 
     // collection. This will then be available as WebContext.Current. 

     WebContext webContext = new WebContext(); 
     webContext.Authentication = new WindowsAuthentication() { DomainContext = new AMSRIAServices.Web.AuthenticationContext() }; 
     this.ApplicationLifetimeObjects.Add(webContext); 
    } 

Puis, en tout code-behind de contrôle utilisateur, je veux récupérer l'information de l'utilisateur. J'ai essayé d'utiliser WebContext.Current.User, mais je n'ai rien. Comment obtenir des informations sur l'utilisateur à partir de Application.Current.ApplicationLifetimeObjects dans le code?

Répondre

0

Le modèle type consisterait à inclure une propriété statique de Current sur votre type de contexte, puis de l'affecter au cours de la méthode StartService.

public class MyWebContext : IAppicationService 
{ 

    public MyWebContext Current {get; private set} 


    public void StartService(ApplicationServiceContext context) 
    { 
     Current = this; 
     // Other initialisation code 
    } 
    // Rest of implementation 

} 

Par conséquent accès à votre objet WebContext est simplement: -

MyWebContext.Current.DoStuff(); 
+0

Merci. J'ai déjà WebContext et je l'ai défini au point de départ de l'application (voir article, j'ajoute l'application()). Il est disponible pour l'application SL. Je veux savoir comment l'obtenir. – KentZhou

+0

@KentZhou: dans ce cas, il aura déjà dérivé de WebContextBase et aura une propriété 'Current'. Je ne connais pas assez les services RIA de WCF pour savoir pourquoi l'utilisateur n'est pas encore configuré, il peut s'agir d'une chose asynchrone ou d'une connexion qui doit d'abord avoir lieu. – AnthonyWJones

0

Je pense à Application_Startup que vous devez faire une LoadUser:

WebContext.Current.Authentication.LoadUser();

Bien que je rencontre un problème similaire à charger l'utilisateur. Mais j'utilise des formesauthentication. Si vous créez une Application métier Silverlight et consultez le fichier app.xaml.cs, vous pouvez voir un exemple de procédure à suivre. Informez-moi si cela fonctionne pour vous avec Windows auth.

Questions connexes