Question

La situation

J'ai un formulaire Web ASP.NET qui contient des informations d'état sur une session Microsoft Lync 2010 d'un utilisateur. Dans l'événement Page Load, j'ai enregistré un gestionnaire d'événements qui écoute un événement de changement d'état de session Lync.

Une fois l'événement déclenché, le gestionnaire d'événements réagit correctement et fait son travail: il change le texte correspondant d'une étiquette spécifique. Le problème est que les modifications ne sont pas visibles sur la page Web frontale.

Le code

Il s'agit d'une instance globale du client Lync, définie dans la page.

private LyncClient _lyncClient;

Ici, j'enregistre le LyncClient dans l'événement Page Load.

protected void Page_Load(object sender, EventArgs e)
{
    RegisterLyncClient();
}

J'attribue l'instance LyncClient au global _lyncClient. Après cela, j'inscris mon auditeur d'événements.

private void RegisterLyncClient()
{
    _lyncClient = LyncClient.GetClient();
    _lyncClient.StateChanged += HandleStateChanged;
}

Cette fonction est déclenchée correctement lorsque le client Lync change d'état. Il est visible en mode débogage.

private void HandleStateChanged(object sender, ClientStateChangedEventArgs e)
{
     SetLyncStatus(e.NewState);
}

Le texte des étiquettes est modifié correctement (en mode débogage). Mais les changements ne sont pas visibles dans le frontend.

private void SetLyncStatus(ClientState lyncState)
{
    lblLyncStatus.Text = lyncState.ToString();
}

<₹Assomption

Si j'utilise un bouton pour modifier manuellement l'état ou si j'utilise une minuterie pour vérifier et régler l'état toutes les secondes, les modifications sont visibles. Je suppose donc que les modifications apportées dans le gestionnaire d'événements HandleStateChanged ne sont pas visibles, car il n'y a pas de publication après l'appel de la fonction SetLyncStatus.

Est-il possible de forcer une publication à partir d'un gestionnaire d'événements, qui n'est pas déclenchée par une action de l'utilisateur (par exemple, l'utilisateur clique sur un bouton)? Ce serait parfait, s'il est possible d'appeler une actualisation partielle de l'étiquette ou une section définie.

Toutes suggestions très appréciées. Merci!

Était-ce utile?

La solution

Avant d'essayer de mettre en œuvre une solution, essayez de comprendre ce qui s'exécute sur le client et sur le serveur.Peut-être que vous avez une formation en développement de bureau et que vous devez donc également comprendre la nature sans état du Web.Tout changement survenant côté serveur ne serait pas reflété côté client et vice-versa.Une fois que le serveur a répondu à une demande, il ne communiquera pas automatiquement la mise à jour de l'état au client.Donc, une approche même conduite ne fonctionnerait pas dans votre cas.Vous devez effectuer des pings du côté client pour déterminer les changements d'état.Ces pings peuvent être effectués en utilisant AJAX avec un intervalle périodique prédéfini.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top