我有一个自定义Web部件,首先获取当前用户登录名,如下所示:
protected static string iAm = System.Web.HttpContext.Current.Request.ServerVariables["AUTH_USER"].Split("\\".ToCharArray())[1].ToLower().
然后它将此字符串传递给bbl类并获取用户ID:
`IDataReader _drInfo = cisf_BLL.bll_MyInfo.drGetMyInfo(iAm);
while (_drInfo.Read())
{
iUser_Ident = _drInfo.GetInt32(30);
}
`之后它将用户id整数传递给另一个获取用户训练记录的方法:
_drUserTraining = bll_Training.drGet_required_training_records(iUser_Ident);
_drUserTrainingCompleted = bll_Training.drGet_completed_training_records(iUser_Ident);
然后,此信息显示在带有三个选项卡的选项卡容器中,例如“过期”,“必需”和“已完成”。
我遇到的问题是:我使用我的域用户名登录SharePoint协作网站,我的所有培训都显示得很好。如果我的其他人然后登录到用户看到我的培训而不是他的培训的SP门户网站,即使该用户使用公共访问卡使用他的唯一凭证登录,就像我一样。
不知怎的,一些奇怪的会话似乎仍然存在,我希望有人在这里遇到这种异常现象。
提前致谢!
Risho
答案 0 :(得分:2)
您滥用静态 - 每个Web服务器进程存储一次静态属性,而不是每个用户存储一次。
答案 1 :(得分:0)
不是答案,而是代码改进:有更简单的方法来获取当前用户名/ ID
SPUser user = Microsoft.SharePoint.[SPContext][1].Current.Web.CurrentUser;
user.ID;
user.Email;
user.Name
user.LoginName;
user.Grups;
....
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spuser_members.aspx