I want my MVC3 web application to access %APPDATA% (e.g. C:\Users\MyUsername\AppData\Roaming
on Windows 7) because I store configuration files there. Therefore I created an application pool in IIS with the identity of the user "MyUsername", created that user's profile by logging in with the account, and turned on the option "Load User Profile" (was true by default anyway). Impersonation is turned off.
Now I have the problem that %APPDATA% (in C#):
appdataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
resolves to c:\windows\system32\inetsrv
instead of C:\Users\MyUsername\AppData\Roaming
.
UPDATE: More exactly, the above C# code returns an empty string, so that Path.GetFullPath(Path.Combine(appdataDir, "MyAppName"))
prepends the current path to my application name, resulting in c:\windows\system32\inetsrv\MyAppName
.
I know I made this work before with the same web application on a Windows Server 2008 R2, and now I'm getting this problem with the same major version 7.5 of IIS on my Windows 7.
I used the same procedure as before: Created a new user, logged in as that user to create the profile and APPDATA directories, then added the application pool with this identity and finally added the web application to this pool.
Any ideas?
Open your %WINDIR%\System32\inetsrv\config\applicationHost.config
and look for <applicationPoolDefaults>
. Under <processModel>
, make sure you don't have setProfileEnvironment="false"
. If you do, set it to true.