我有一个asp.net mvc3应用程序。现在我想在
中保存userdataC:\用户{AppPoolUserAccount} \应用程序数据\漫游\ MyProgramm ...
第一次调用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
我只得到“”(String.Empty)。
第二次通话Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
会返回正确的路径......
注意: 例程在Login-Context中。我想在xml文件中保存用户名和sessionID 防止两个用户通过一个用户帐户同时登录。
为什么?
答案 0 :(得分:6)
Environment.GetFolderPath
返回大多数SpecialFolder枚举值的空字符串,因为未加载用于运行应用程序池的用户的用户配置文件。
您需要配置应用程序池以加载用户配置文件,方法是进入IIS管理器>应用程序池> YourAppPool>高级设置>加载用户配置文件,并将值设置为“true”或打开命令提示符并运行
appcmd set apppool "MyAppPool" -processModel.loadUserProfile:true
(通常你会在C:\ Windows \ SysWOW64 \ inetsrv中运行它。)
以下是一些包含更多数据的链接:
答案 1 :(得分:0)
如果您想共享数据(例如当前登录的用户),请尝试使用以下代码:
在global.asax中,当应用程序启动时:
var users = new List<Guid>();
Application["loggedUsers"] = users;
然后,如果用户正在登录,请输入:
var users = (List<Guid>)Application["loggedUsers"];
users.Add(currentlyLoggingOnUserId);
Application["loggedUsers"] = users;
答案 2 :(得分:0)
Environment.GetFolderPath
按设计返回空字符串。来自MSDN:
Environment.GetFolderPath方法(Environment.SpecialFolder)
返回值类型:System.String
指定系统特殊文件夹的路径(如果是该文件夹) 实际存在于您的计算机上;否则,为空字符串(“”)。
如果操作系统没有,则实际上不存在文件夹 创建它,删除现有文件夹,或者文件夹是虚拟文件夹 目录,例如“我的电脑”,它与a不对应 物理路径。