Domanda

La situazione

Ho un WebForm ASP.NET che contiene alcune informazioni sullo stato sulla sessione di Microsoft Lync 2010 per utenti. Nell'evento Page_Load ho registrato un gestore di eventi che ascolta per un evento di modifica dello stato della Lync Session.

Una volta che l'evento si accende, il gestore degli eventi reagisce correttamente e fa il suo lavoro: cambia il testo secondo un'etichetta specifica. Il problema è che le modifiche non sono visibili nella pagina web front -end.

Il codice

Questa è un'istanza del client Lync globale, definita nella pagina.

private LyncClient _lyncClient;

Qui sto registrando LyncClient nell'evento Page_Load.

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

Assegno l'istanza LyncClient al globale _LyncClient. Dopodiché registro il mio ascoltatore di eventi.

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

Questa funzione viene sparata correttamente poiché il client Lync cambia il suo stato. È visibile durante la modalità di debug.

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

Il testo delle etichette viene modificato correttamente (durante la modalità di debug). Ma i cambiamenti non sono visibili in frontend.

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

Assunzione

Se utilizzo un pulsante per modificare manualmente lo stato o se utilizzo un timer per controllare e regolare lo stato ogni secondo, le modifiche sono visibili. Quindi presumo che le modifiche apportate all'interno del gestore di eventi Handlestatechanged non siano visibili, perché non esiste un postback dopo aver chiamato la funzione Setlyncstatus.

Domanda

È possibile forzare un postback da un gestore di eventi, che non viene sparato da un'azione per utenti (ad esempio l'utente fa clic su un pulsante)? Sarebbe perfetto, se fosse possibile chiamare un aggiornamento parziale dell'etichetta o di una sezione definita.

Eventuali suggerimenti molto apprezzati. Grazie!

È stato utile?

Soluzione

Prima di provare ad implementare qualsiasi soluzione, prova a capire cosa funziona sul client cosa sul server. Forse hai un background di sviluppo desktop e quindi devi anche capire la natura apolida del web. Eventuali modifiche che si verificano sul lato server non riflettono sul lato client e sul viceversa. Una volta che il server ha risposto a una richiesta, non comunicherebbe automaticamente l'aggiornamento dello stato al client. Quindi un approccio uniforme non funzionerebbe nel tuo caso. È necessario eseguire i ping dal lato client per determinare le modifiche allo stato. Questi ping possono essere eseguiti usando AJAX con un intervallo periodico predefinito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top