我希望我的 MVC3 Web 应用程序访问 %APPDATA%(例如 Windows 7 上的 C:\Users\MyUsername\AppData\Roaming
),因为我将配置文件存储在那里。因此,我在 IIS 中以用户“MyUsername”的身份创建了一个应用程序池,通过使用该帐户登录创建了该用户的配置文件,并打开了“加载用户配置文件”选项(无论如何默认为 true)。模拟功能已关闭。
现在我遇到了 %APPDATA%(在 C# 中)的问题:
appdataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
解析为
c:\windows\system32\inetsrv
而不是 C:\Users\MyUsername\AppData\Roaming
.更新:更确切地说,上面的 C# 代码返回一个空字符串,因此
Path.GetFullPath(Path.Combine(appdataDir, "MyAppName"))
将当前路径添加到我的应用程序名称中,结果是 c:\windows\system32\inetsrv\MyAppName
.我知道我之前在 Windows Server 2008 R2 上使用相同的 Web 应用程序完成了这项工作,现在我在 Windows 7 上使用相同的 IIS 7.5 主要版本遇到了这个问题。
我使用了与之前相同的过程:创建一个新用户,以该用户身份登录以创建配置文件和 APPDATA 目录,然后使用此身份添加应用程序池,最后将 Web 应用程序添加到此池中。
有什么想法吗?
最佳答案
打开您的 %WINDIR%\System32\inetsrv\config\applicationHost.config
并寻找 <applicationPoolDefaults>
.下 <processModel>
,请确保您没有 setProfileEnvironment="false"
.如果这样做,请将其设置为 true。
关于IIS 7.5 应用程序池将错误的 %APPDATA% 用于自定义用户作为标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490107/