Team System: TeamFoundationServerFactory.GetServer accede al registry - LA SOLUZIONE

Se cercate di creare un oggetto TeamFoundationServer da un thread che gira con un account utente che non ha le credenziali di scrittura sul registry incapperete nell'eccezione [SecurityException: Requested registry access is not allowed.] (come già descritto qui).
Grazie all'inossidabile Lorenzo ed ai suoi preziosi contatti ho trovato la soluzione.

Sostanzialmente (se ho ben capito) se specifico un server nei metodi (ed i loro rispettivi overloads):
TeamFoundationServerFactory.GetServer(serverName)
new TeamFoundationServer(serverName)
passando come parametro il SOLO NOME del server viene effettuato dapprima un accesso in lettura alla chiave:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\TeamFoundation\Servers
per verificare se esiste un server memorizzato con il nome passato, dappoi tenta l'accesso al server specificato sulla porta standard (8080). Verificata l'esistenza del server cerca di scrivere nella sopracitata chiave un valore. E qui casca TS: se il mio utente non ha il permesso di scrittura nella chiave tutto crasha (no, non ditemi "é giusto così": la verità é che manca un bel try catch!).

Workaround? Banalmente basta specificare l'URL completo del server: http://severName:8080
Se poi avete esigenza di fare funzionare il tutto con ASP.NET ringraziando l'amico Luis di Lorenzo guardaveti questa pagina.

Incrociare le dita... e che Dio ce la mandi buona!

Print | posted on mercoledì 20 giugno 2007 20:48

Comments have been closed on this topic.