Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 返回 String.Empty

2024-04-22

我有一个 ASP.NET MVC3 应用程序。现在我想将用户数据保存在

C:\Users{AppPoolUserAccount}\AppData\Roaming\MyProgramm...

第一次致电时Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)我只得到“”(String.Empty)。 第二次通话时Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)返回正确的路径...

笔记: 该例程位于登录上下文中。我想将用户名和 sessionID 保存在 xml 文件中 防止两个用户通过一个用户帐户同时登录。

Why?


Environment.GetFolderPath对于大多数 SpecialFolder 枚举值返回空字符串,因为未加载用于运行应用程序池的用户的用户配置文件。

您需要配置应用程序池以加载用户配置文件,方法是进入 IIS 管理器 > 应用程序池 > YourAppPool > 高级设置 > 加载用户配置文件,并将值设置为“true”,或者打开命令提示符并运行

appcmd set apppool "MyAppPool" -processModel.loadUserProfile:true

(通常您将在 C:\Windows\SysWOW64\inetsrv 中运行它)。

以下是一些包含更多数据的链接:

  • 加载用户配置文件和 IIS7 http://blogs.iis.net/bills/archive/2006/10/18/loadUserProfile-and-IIS7-_2D00_-understanding-temporary-directory-failures.aspx(这个说加载配置文件是默认的,它 不是,但除此之外它是正确的。也许他们改变了默认设置 7 到 7.5 之间?)
  • 应用程序池的进程模型设置 http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add/processModel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 返回 String.Empty 的相关文章

随机推荐