【发布时间】:2012-03-18 09:45:54
【问题描述】:
我希望我的 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 上使用相同的主要版本 7.5 的 IIS 时遇到了这个问题。
我使用与以前相同的过程:创建一个新用户,以该用户身份登录以创建配置文件和 APPDATA 目录,然后添加具有此身份的应用程序池,最后将 Web 应用程序添加到此池中。
有什么想法吗?
【问题讨论】:
-
您的应用程序池是配置为经典模式还是集成模式?
-
我也有同样的问题。特别奇怪的是 Environment.SpecialFolder.UserProfile 的路径工作正常,如果我从那里建立 AppData 文件夹的路径,它就可以工作。
标签: iis iis-7.5 application-pool appdata applicationpoolidentity