2012-01-23 11 views
5

Sfondo (saltare fino in fondo, se si desidera che la domanda)AnkhSVN rompe autorizzazioni di condivisione ASP.NET con SVN 1,7

Recentemente ho aggiornato un repository SVN (ospitato su assembla) a SVN 1.7. Dopo averlo fatto, abbiamo iniziato a riscontrare in modo intermittente molti errori File Access Denied nelle pagine del sito ASP.NET che si trovano nella copia di lavoro locale del repository.

Alcune cartelle hanno anche iniziato a ottenere autorizzazioni di file strani (sono state contrassegnate come di sola lettura) e la condivisione degli utenti è stata rimossa da esse. Questi problemi inizieranno solo a verificarsi dopo un ciclo di aggiornamento/commit, tramite il plugin Visual Studio di AnkhSVN, ma non sempre; sembrava molto capriccioso.

L'unico temp-fix che abbiamo trovato finora è quello di commettere eventuali modifiche in sospeso, eliminare la copia locale e ricontrollare una copia di lavoro completa (con TortoiseSVN). Tuttavia, questa non è una soluzione valida e ha gravi ripercussioni sulla produttività.

Questo sito è un ASP.NET WebWorkerRole basato su Azure. Non ha mai dato problemi prima dell'aggiornamento a SVN 1.7. Ho provato a giocherellare con i permessi interni di IIS per aggirare il problema, tuttavia, nessun dado.

mio ambiente

  • Visual Studio 2010 Ultimate SP1 10.0.40219.1
  • AnkhSVN 2.3.10509 (ultima versione, supporta SVN 1.7.1)
  • TortoiseSVN 1.7.1, Build 22161 - 64 Bit
  • funzionando in modalità debug attraverso l'ambiente emulatore Azure

La domanda

E 'possibile che SVN 1.7 o uno qualsiasi degli strumenti nel mio ambiente interrompa le autorizzazioni di file in modo che i file diventino inutilizzabili in un sito ASP.NET? e ancora più importante, come posso risolvere questo?


L'esatto errore di autorizzazione file di pratiche di dumping su è questo:

Accesso al percorso '// // del file' è negato.

Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione di la richiesta Web corrente. Si prega di rivedere lo stack trace per ulteriori informazioni sull'errore e dove è stato originato nel codice.

Dettagli eccezione: System.UnauthorizedAccessException: accesso al percorso '// file //' negato.

ASP.NET non è autorizzato ad accedere alla risorsa richiesta. Considerare concedere i diritti di accesso alla risorsa all'identità di richiesta ASP.NET . ASP.NET ha un'identità di processo di base (in genere {MACHINE} \ ASPNET su IIS 5 o Servizio di rete su IIS 6 e IIS 7 e l'identità del pool di applicazioni configurato su IIS 7.5) che viene utilizzata se l'applicazione non sta impersonando .Se l'applicazione è impersonando tramite, l'identità sarà l'utente anonimo (in genere IUSR_MACHINENAME) o l'utente di richiesta autenticato .

Per concedere l'accesso ASP.NET a un file, fare clic con il tasto destro del mouse sul file in Explorer, scegliere "Proprietà" e selezionare la scheda Sicurezza. Fai clic su "Aggiungi" per aggiungere l'utente o il gruppo appropriato. Evidenziare l'account ASP.NET e selezionare le caselle per l'accesso desiderato.

Ma una copia di lavoro pulita non genererà questo errore. Confrontando i permessi dei due, sembra che le copie funzionanti che non sono buggite siano condivise (con IUSR e l'account locale), mentre quelle rotte hanno zero condivisione, eppure la condivisione non viene mai modificata dall'utente.

+0

È possibile indicare in che modo le autorizzazioni per i file sono state interrotte? A cosa sono assegnati, cosa manca, ecc? Puoi indicare cosa è la radice di copia di lavoro (la cartella contenente la cartella .svn)? Inoltre, penso che sia necessario modificare la domanda per definire la differenza tra repository e copia di lavoro. Non clonare un "repository lato client" in Subversion. –

+0

@SanderRijken: ok, lo aggiornerò. in termini di pensiero del clone, era una cosa di GIT ... – Necrolis

risposta

3

Ho risolto questo accedendo alle impostazioni di sicurezza per la cartella del sito Web e facendo clic su Avanzate e quindi su Modifica autorizzazioni per l'utente IIS_IUSRS. Ho controllato "Sostituisci tutte le autorizzazioni degli oggetti figlio con autorizzazioni ereditabili da questo oggetto" e ho fatto clic su Applica.

Prima di ciò, avevo assegnato all'utente IIS le autorizzazioni complete alla cartella tmp nascosta nella radice del checkout, ma non so se questo aiuti con qualcosa.

Non sono sicuro se questa è una correzione permanente, ma nel caso non lo sia, è possibile utilizzarla almeno per riapplicare le autorizzazioni per tutti i file in una singola operazione.

+0

Finalmente è riuscito a rompere di nuovo, riapplicare le autorizzazioni di sicurezza lo ha risolto, allo stesso tempo siamo riusciti a scoprire che se un determinato utente si impegna, otteniamo questo problema, e ho la sensazione che il suo IIS sia impostato erroneamente – Necrolis

+0

Dopo aver applicato la correzione di cui sopra e utilizzato per 8 giorni, non ho ancora incontrato il problema. –

+0

Penso di avere lo stesso problema con MVC3, ma è leggermente diverso. Ho aggiunto le autorizzazioni come suggerito. Anche per l'identità del SERVIZIO DI RETE (che è l'id dell'appPool), ma ogni richiesta a un file javascript o css restituisce un codice HTTP 302 FOUND. Successivamente, ogni richiesta viene reindirizzata alla pagina di accesso con argomenti senza senso. Qualcuno ha altre idee su come risolverlo? – jkokorian

16

Quando subversion aggiorna un file, crea prima una versione temporanea in .svn/tmp /. Quindi sposta il file nella posizione corretta. (Questo per evitare corruzioni)

In 1.6 lo ha fatto per ogni directory da solo, ma in 1.7 c'è solo un .svn nella directory di livello superiore della tua copia di lavoro.

Se in qualche modo le autorizzazioni del file system di questa directory .svn sono limitate, è possibile che le restrizioni vengano copiate con il file quando viene spostato sul posto. (Subversion non modifica le autorizzazioni in sé su Windows)

1

Molte informazioni si trovano nelle cartelle .svn all'interno della directory in cui è stato estratto il progetto. Quindi, a mio parere, è meglio utilizzare SVN separatamente dagli strumenti di integrazione avanzati. Anche this si occupa della risoluzione di problemi come questo.

1

ho trovato questo esattamente lo stesso problema è accaduto quando ho fatto un 'Ripristina' utilizzando:

  • tortoisesvn 1.6.16
  • AnkhSVN 2.3.11269.1348.
  • Visual Studio 2010 Professional
  • Windows 7 - 64 bit.

Sono stato completamente perplesso la prima volta che ho incontrato l'errore di autorizzazioni e iniziato pensando che fosse il mio codice. Dopo un po 'di giocherellando, ho finito con l'eliminare l'intero progetto e il nuovo download da Subversion che risolveva il problema.

Quando questo problema si ripresenta, ho osservato più da vicino il file ripristinato e ho trovato che le autorizzazioni sui file ripristinati non corrispondono ai permessi degli altri file. In particolare, le autorizzazioni 'Utenti', per la macchina su cui è in esecuzione Visual Studio, mancano del tutto.

Così ho appena aggiunto nel secondo:

  • clic destro sul file problema. Ciò ha causato la visualizzazione della finestra delle proprietà del file.
  • Quindi fare clic su "Modifica ...". Viene visualizzata la finestra dei permessi.
  • Quindi fare clic su Aggiungi e viene visualizzata la finestra "Seleziona utenti, computer, account di servizio o gruppi".
  • Fare clic sul pulsante Tipi di oggetto e selezionare tutte le caselle.
  • Fare clic sul pulsante Posizioni e assicurarsi che il nome della macchina sia selezionato.
  • Digitare "utenti" quindi fare clic sul pulsante "Controlla nomi".
  • Fare clic su OK su tutte le finestre per chiuderle.

Il sito Web ora deve essere eseguito senza l'errore delle autorizzazioni.

Problemi correlati