以下内容在我的本地开发盒上效果很好。但是,当我将其移动到网络服务器时,它失败了,甚至不会记录错误:
public static List<string> getAuthorizationGrps(string userName)
{
List<string> grps = new List<string>();
try
{
PrincipalSearchResult<Principal> groups = UserPrincipal.Current.GetGroups();
IEnumerable<string> groupNames = groups.Select(x => x.SamAccountName);
foreach (var name in groupNames)
{
grps.Add(name.ToString());
}
return grps;
}
catch (Exception ex)
{
Log.WriteLog("Error in retriving form data: " + ex.Message);
}
}
我是否必须在网络服务器上设置权限才能查询组?我可以在本地和网络服务器上毫无问题地获取当前用户。
任何想法将不胜感激,我已经为此奋斗了两天了。
大约 6 个月前,我们遇到了类似的问题。我们的代码调用 UserPrincipal.Current.GetGroups() 并枚举 foreach 循环中的对象。在测试和生产中工作得很好,直到一天早上,1 位同事在执行代码时不断出现异常。枚举 groupNames 对象开始抛出 IndexOutOfRangeException。一个小时后,我无法弄清楚出了什么问题,所以我添加了一个拼凑,称为一个进行 ADSI 调用的存储过程,类似于第二个答案here https://stackoverflow.com/questions/1766061/tsql-how-to-get-a-list-of-groups-that-a-user-belongs-to-in-active-diretory。它不漂亮,但从来没有出现过任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)