2013-12-17 6 views
6

Ich habe eine Webanwendung, die von DefaultAppPool Konto ausgeführt wird. Ich möchte einige Dateien in den DefaultAppPool der AppData-Ordner (oder einen anderen Ordner, die zu 100% zugänglich von dem Konto ist meine Anwendung ausgeführt wird) schreibenGet DefaultAppPool AppData Ordner aus der Webanwendung

I

Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) 

aber aus irgendeinem Grund versucht haben, Es gibt eine leere Zeichenfolge zurück.

Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile) 

gibt C:\\Users\DefaultAppPool wie erwartet zurück.

Wie kann ich den AppData-Pfad für DefaultAppPool abrufen?

EDIT: Dieser Code in das Modell ausgeführt wird

+0

Haben Sie versucht, die immer Umgebungsvariablenwert% AppData%? –

+0

Ja, ich habe versucht, \t \t 'System.Environment.ExpandEnvironmentVariables ("% AppData% ")', aber es gibt "C: \\ Windows \\ System32 \\ Config \ Systemprofil \ AppData \\ Roaming" und Meine Web-App kann dort nicht schreiben – VladL

+2

Obwohl es ein Benutzerverzeichnis für DefaultAppPool auf der Festplatte gibt, wird das Profil für den 'Benutzer' nicht geladen, wenn der AppPool ausgeführt wird, deshalb 'Environment.GetFolderPath (System.Environment.SpecialFolder.ApplicationData) 'ist leer und deshalb erhalten Sie stattdessen das Systemprofil. Hutchonoids Lösung scheint zu funktionieren, aber ich würde tatsächlich davon abraten, irgendwelche permanenten Daten im Benutzerverzeichnis des AppPool-Identitätsbenutzers zu speichern. Was passiert, wenn ein Administrator die Identität des AppPools ändert? Für temporäre Daten können Sie immer auf% temp% –

Antwort

1

ich es wie folgt tun:

var path = string.Format("{0}\\{1}", Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile), "AppData") 
+0

+1 es funktioniert aber sieht ein bisschen wie eine hardcoded string für mich – VladL

+0

Stimme völlig zu, +1 Frage. Ich konnte nur den ApplicationData-Ordner für mich zurückgeben, ich gab es auf, aber ich bin interessiert zu sehen, ob jemand die vollständige Antwort hat. :) – hutchonoid

0

Ich habe es wie folgt aus:

string apPath = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data");