Viene visualizzato un messaggio di errore "Accesso al percorso negato" quando si esegue in modalità di debug. Ho provato a concedere le autorizzazioni a {MACHINENAME} \ ASPNET e al SERVIZIO DI RETE ma ciò non ha fatto alcuna differenza. < impersonate = true /> utilizzando un account amministratore, anche questo non ha fatto alcuna differenza Quindi come stabilire esattamente quale account viene utilizzato?Come scoprire quale account è in esecuzione il mio codice ASP.NET?
risposta
Per scoprire quale account NT è in esecuzione l'app in un determinato momento, fare qualcosa di simile (in VB.NET):
Dim User = System.Security.Principal.WindowsIdentity.GetCurrent.User
Dim UserName = User.Translate(GetType(System.Security.Principal.NTAccount)).Value
Quando si utilizza ASP.NET, questo account corrisponderà l'identità del pool di applicazioni, che si configura utilizzando Gestione IIS. Si noti che l'utente IIS anonimo non è molto coinvolto nelle richieste ASP.NET.
È possibile utilizzare questo codice:
C#
Response.Write("Windows Account which runs ASP.NET is: "
+ Environment.Username);
VB.NET
Response.Write("Windows Account which runs ASP.NET is: " _
& Environment.Username)
Se si esegue l'applicazione in Visual Studio sul PC (localhost) otterrai il tuo nome utente. Se si distribuisce l'applicazione Web ASP.NET su IIS, si otterrà probabilmente l'account SERVIZIO DI RETE, poiché questo è l'utente predefinito che esegue IIS 6.0 (ASPNET su IIS 5.0 di Windows Server 2000).
Environment.UserName
restituisce l'utente attualmente connesso al thread. Page.User
restituisce il nome che ASP.NET verifica tramite Autenticazione e questo utente nella maggior parte dei casi è indipendente dall'accesso a Windows che esegue il thread corrente. Per le richieste anonime, la pagina.User è vuota, mentre Environment.User sarà NETWORK SERVICE.
Come mdb indica correttamente in un commento a questa risposta, Environment.Username restituirà semplicemente la variabile di ambiente USERNAME, che viene impostata sulla creazione del processo e non aggiornata in caso di rappresentazione e così via.
codice C# per la risposta vb.net
var user = System.Security.Principal.WindowsIdentity.GetCurrent().User;
var userName = user.Translate(typeof (System.Security.Principal.NTAccount));
strint t=System.Web.Security.Membership.GetUser().UserName.ToString();
A beneficio dei futuri lettori puoi aggiungere del testo per spiegare perché questa risposta è preferibile a quelli più vecchi? – Flexo
Questo non funziona. Questo restituisce il nome utente dell'utente connesso - non il nome utente dell'utente che esegue l'applicazione Web, che è ciò che l'OP chiedeva. – NickG
- 1. Scoprire quale utente Apache è in esecuzione come in Windows?
- 2. Come posso sapere quale Runtime Host è correntemente in esecuzione il mio codice?
- 3. Scoprire quale controllo è attivo
- 4. Come posso scoprire quale script, programma o shell è stato eseguito il mio script Perl?
- 5. Come scoprire quale elemento GWT è attivo?
- 6. quale utente esegue il mio utente asp.net?
- 7. come vedere quale codice javascript è attualmente in esecuzione?
- 8. Scoprire se l'attività Android è in esecuzione
- 9. Come posso scoprire quale script PHP è in esecuzione un processo in Linux?
- 10. Come trovo il nome dell'ambiente conda in cui è in esecuzione il mio codice?
- 11. Come scoprire che il mio sito è stato raschiato?
- 12. Come scoprire se un processo è in esecuzione in C?
- 13. Scoprire quando il codice è cambiato in git
- 14. Android: Identificare quale codice un AsyncTask è in esecuzione
- 15. Come scoprire quale versione di mod_perl è installata?
- 16. Come sapere che il mio codice è in esecuzione in modalità "debug" in IDE?
- 17. Scopri in quale istanza di porta Django è in esecuzione?
- 18. Come posso rilevare se il mio codice è in esecuzione nella console in Rails 3?
- 19. ASP.Net Web Service: il codice in esecuzione in modo asincrono
- 20. Il mio codice è efficiente per scoprire il prossimo palindromo dato un numero intero positivo?
- 21. Come scoprire quale algoritmo [crittografia] è supportato dalla mia JVM?
- 22. Impossibile scoprire quale codice di ritorno di -11 significa
- 23. Come faccio a sapere che il mio codice è in esecuzione su Mono?
- 24. Come scoprire quale standard ANSI C il mio gcc funziona di default?
- 25. Come eliminare gli account utente in asp.net?
- 26. Come scoprire con quale sito Sitecore è associato un articolo?
- 27. Come scoprire se il mio sistema operativo è in esecuzione su un ambiente virtualizzato o non virtualizzato?
- 28. Quale parte del mio codice MATLAB è multi-thread?
- 29. Come scoprire quale tasto del carattere è stato premuto?
- 30. Come scoprire quale versione di webdeploy/msdeploy è attualmente installata?
Non tenere a mente, però, che Environment.Username restituirà semplicemente la variabile d'ambiente USERNAME, che è impostato sulla creazione di processo e non aggiornato in caso di furto d'identità e così via. – mdb