我有一个 asp.net mvc3 应用程序。现在我想将用户数据保存在
C:\Users{AppPoolUserAccount}\AppData\Roaming\MyProgramm...
在第一次调用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
时,我只得到“”(String.Empty)。
在第二次调用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
时返回正确的路径...
注意: 该例程位于登录上下文中。我想将用户名和 session ID 保存在 xml 文件中 以防止两个用户通过一个用户帐户同时登录。
为什么?
最佳答案
Environment.GetFolderPath
为大多数 SpecialFolder 枚举值返回空字符串,因为未加载用于运行应用程序池的用户的用户配置文件。
您需要配置应用程序池以加载用户配置文件,方法是进入 IIS 管理器 > 应用程序池 > YourAppPool > 高级设置 > 加载用户配置文件,并将值设置为“true”,或者打开命令提示符并运行
appcmd set apppool "MyAppPool" -processModel.loadUserProfile:true
(通常您会在 C:\Windows\SysWOW64\inetsrv 中运行它)。
这里有几个包含更多数据的链接:
- loadUserProfile and IIS7 (这个说加载配置文件是默认的,它 不是,但它是正确的。也许他们改变了默认 在 7 到 7.5 之间?)
- Process Model Settings for an Application Pool
关于c# - Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 返回 String.Empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428945/