2012-11-20 7 views
6

Il mio codice usa:WebAuthenticationBroker.AuthenticateAsync getta eccezione

WebAuthenticationResult WebAuthenticationResult = await 
WebAuthenticationBroker.AuthenticateAsync( 
             WebAuthenticationOptions.None, 
             StartUri, 
             EndUri); 

proprio come il Microsoft Web authentication broker sample

'abituato a lavorare sul mio desktop e sul mio tablet (Surface), ma ora non funziona sul mio desktop . Genera eccezione

The process terminated unexpectedly. (Exception from HRESULT: 0x8007042B) 

Sta funzionando sul tablet e su diversi desktop windows-8.

Qualche suggerimento su cosa può causare questa eccezione?

+0

Sembra che WebAuthenticationBroker funzioni solo in WinRT. – tofutim

+0

Il problema potrebbe essere che funziona solo sul thread dell'interfaccia utente. – BenCr

+0

Se non lo si è già fatto, esiste un registro eventi specifico per WebAutheticationBroker. Vedere questo ... http://msdn.microsoft.com/en-us/library/windows/desktop/jj658959(v=vs.85).aspx – BenCr

risposta

0

Non sono sicuro, ma penso che WebAuthBroker debba essere invocato sul thread dell'interfaccia utente poiché sta tentando di modificare qualcosa nell'interfaccia utente in modo da mostrarti il ​​pop-up.

0

WebAuthenticationBroker.AuthenticateAsync avvia il processo AuthHost.exe come figlio del processo dell'app e l'HRESULT restituito dall'eccezione indica che AuthHost.exe ha avuto esito negativo inaspettatamente. Quando viene avviato, AuthHost tenta di eliminare i cookie, il contenuto e la cronologia da contenitori non SSO e, in caso di errore, arretra. Dall'altra parte, un'applicazione Windows viene eseguita in una sandbox con un set di autorizzazioni diverso da un'applicazione desktop. Pertanto, Internet Explorer stesso o un'applicazione desktop che esegue SSO potrebbe funzionare normalmente, ma ad AuthHost non è consentito eseguire la pulizia richiesta all'avvio. Nel mio caso, un utente che eseguiva l'app era una parte del gruppo a cui era stato concesso l'accesso completo alla cartella, ma l'utente stesso non aveva i permessi di accesso diretto ai file. Tuttavia, i diritti di gruppo sono stati eliminati nella sandbox dell'app. In una configurazione predefinita, le autorizzazioni sono configurate correttamente e non dovrebbero sorgere problemi di questo tipo. Tuttavia, nei casi seguenti un utente sposta i file temporanei Internet in una nuova posizione, che potrebbe avere un set leggermente diverso di autorizzazioni di accesso ai file. L'altra risposta su questo thread suggerisce che l'eliminazione e la ricreazione del profilo aiutano. Questa operazione ripristina le impostazioni di file temporanei Internet in Internet Explorer per impostazione predefinita, supportando indirettamente il mio suggerimento.