2017-01-20 3 views
0

Je tente désespérément d'implémenter un «délai d'inactivité de session» pour une stratégie de sécurité informatique. sss Cependant, ma logique de réinitialisation d'inactivité ne se déclenche pas. Qu'est-ce que je fais mal? Je ne peux pas joindre un point d'arrêt en raison de l'écrasement de Visual Studio lors de la connexion au binaire Silverlight. Je me demande si le problème est quelque chose de très subtil, comme au moment où le constructeur App est appelé, il n'y a pas encore "Current RootVisual". Marquage aveC#WPF également puisque #Silverlight est mort/obsolète. Exemple de code ci-dessous.Gestionnaire d'événements Silverlight Global Mouse Down

namespace TestApp 
{ 
    public partial class App : Application 
    { 
    System.Windows.Threading.DispatcherTimer sessionTimer = new System.Windows.Threading.DispatcherTimer(); 

    public App() 
    { 
     ResetSessionTimer(); 

     this.RootVisual.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(rootVisual_MouseLeftButtonDown), true); 
     //this.RootVisual.MouseLeftButtonDown += rootVisual_MouseLeftButtonDown; 
     InitializeComponent(); 
    } 

    private void ResetSessionTimer() 
    { 
     sessionTimer.Stop(); 
     sessionTimer.Tick -= sessionTimer_Tick; 
     sessionTimer = new System.Windows.Threading.DispatcherTimer(); 
     sessionTimer.Interval = TimeSpan.FromMinutes(1); 
     sessionTimer.Tick += sessionTimer_Tick; 
     sessionTimer.Start(); 
    } 

    private void sessionTimer_Tick(object sender, EventArgs e) 
    { 
     System.Windows.Browser.HtmlPage.Document.GetElementById("LogoutButton").Invoke("click", null); 
    } 

    private void rootVisual_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     // added this alert to see if code is even firing. 
     System.Windows.Browser.HtmlPage.Window.Invoke("alert", "hello, world"); 
     ResetSessionTimer(); 
     e.Handled = false; 
    } 
    } 
} 

Répondre

0

Je compris cela - quelque part dans le code, le développeur précédent était PRÉPONDÉRANTS l'élément this.RootVisual avec un nouveau MainPage() afin de permettre leur injection de dépendance Homegrown/architecture MVVM. J'ai déplacé la logique du constructeur App() juste après cet opérateur d'affectation, et cela fonctionne comme par magie.