Der IIS 7.5-Anwendungspool verwendet die falsche% APPDATA% für den benutzerdefinierten Benutzer als Identität

8

Ich möchte, dass meine MVC3-Webanwendung auf% APPDATA% (z. B. C:\Users\MyUsername\AppData\Roaming unter Windows 7) zugreift, da ich dort Konfigurationsdateien speichern kann. Daher habe ich einen Anwendungspool in IIS mit der Identität des Benutzers "MyUsername" erstellt, das Profil dieses Benutzers erstellt, indem ich mich mit dem Konto anmeldete, und die Option "Load User Profile" aktiviert (war sowieso immer "True"). Identitätswechsel ist deaktiviert.

Jetzt habe ich das Problem, dass% APPDATA% (in C #):

%Vor%

wird in c:\windows\system32\inetsrv anstelle von C:\Users\MyUsername\AppData\Roaming aufgelöst.

UPDATE: Genauer gesagt gibt der obige C # -Code eine leere Zeichenfolge zurück, so dass Path.GetFullPath(Path.Combine(appdataDir, "MyAppName")) den aktuellen Pfad zu meinem Anwendungsnamen voranstellt, was in c:\windows\system32\inetsrv\MyAppName resultiert.

Ich weiß, dass ich dies bereits mit der gleichen Webanwendung auf einem Windows Server 2008 R2 gemacht habe, und jetzt bekomme ich dieses Problem mit der gleichen Hauptversion 7.5 von IIS auf meinem Windows 7.
Ich habe die gleiche Prozedur wie zuvor verwendet: Einen neuen Benutzer erstellt, der sich als dieser Benutzer angemeldet hat, um die Profil- und APPDATA-Verzeichnisse zu erstellen, dann den Anwendungspool mit dieser Identität hinzugefügt und schließlich die Webanwendung diesem Pool hinzugefügt.

Irgendwelche Ideen?

    
AndiDog 28.02.2012, 21:35
quelle

5 Antworten

14

Öffnen Sie Ihre %WINDIR%\System32\inetsrv\config\applicationHost.config und suchen Sie nach <applicationPoolDefaults> . Stellen Sie unter <processModel> sicher, dass Sie setProfileEnvironment="false" nicht haben. Wenn Sie dies tun, setzen Sie es auf wahr.

    
Amit Apple 10.12.2012 17:59
quelle
2

Anwendungspools - Ihr Anwendungspool - Erweiterte Einstellungen ...

Prozessmodell - Benutzerprofil laden True gesetzt.

Es hilft mir.

Aus genommen Ссылка

    
Anton Semenov 11.12.2017 14:11
quelle
0

Ich habe das gleiche Problem. Haben Sie zufällig die Betaversion von Visual Studio 11 installiert? Ich habe kürzlich, und ich habe bemerkt, ein paar Unterschiede in wie die 4.0 kompatiblen .dlls für das mit unserem Code arbeiten. Ich versuche immer noch, das Problem sicher zu finden, aber ich hatte dieses Problem vorher nicht.

Bearbeiten:

Nach dem Vergleich der dekompilierten Quellen von 4.0 und 4.5 für GetFolderPath (und verwandte) gibt es Unterschiede. Ob sie die Ursache des Problems sind ... Ich bin mir noch nicht sicher.

Bearbeiten 2: Hier sind die relevanten Änderungen. Ich arbeite daran, beide zu sehen, ob ich andere Ergebnisse bekomme. [Code entfernt]

Bearbeiten 3:

Ich habe jetzt versucht, SHGetFolderPath direkt aufzurufen, was das .NET Framework sowieso macht. Es gibt E_ACCESSDENIED (-2147024891 / 0x80070005) zurück. Ich weiß nicht, was sich in bestimmten Fällen geändert hat, wo ich das bekomme, aber nicht in anderen.

Bearbeiten 4:

Da Sie eine leere Zeichenfolge erhalten, möchten Sie möglicherweise Ihren Code so ändern, dass er SHGetFolderPath verwendet, damit Sie das HResult abrufen und zumindest wissen können, was genau passiert.

%Vor%     
Brian Kavanaugh 23.04.2012 12:40
quelle
0

Das Problem liegt in Ihren IIS-Einstellungen. Die Antwort lautet hier: Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData) gibt String.Empty

zurück     
grahamesd 19.07.2012 13:45
quelle
0

Ich habe kürzlich das gleiche Problem erlebt. Wie von Amit erwähnt, ist das Problem, dass das Benutzerprofil nicht geladen ist. Die Einstellung gilt für alle Anwendungspools und befindet sich in der AnwendungHost.config (normalerweise C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config). Wenn Sie die applicationPoolDefaults Elemente wie folgt aktualisieren, wird es funktionieren;

%Vor%

Wir haben das mit IIS 7.5 ausprobiert und es ohne Probleme in die Produktion geschafft.

Sie können dies automatisieren, wenn Sie möchten;

%Vor%

oder wenn Sie Powershell bevorzugen

%Vor%

Hoffe, das hilft

    
tapmantwo 12.04.2017 12:28
quelle