在 MVC 应用程序的某个点,我搜索 Active Directory 以获取包含该模式的用户帐户。问题是,在我的公司,一些用户的 UserPrincipalName 上有口音/变音符号,当我进行搜索时,这些用户不存在。但是,如果我在没有重音的情况下进行搜索,应用程序会找到这些用户。
我已经尝试将字符串转换为 Unicode,但不起作用。我用过this , this , this和其他一些我找不到的东西。
public static List<string> SearchUsername(string __Pattern)
{
__Pattern = __Pattern.Normalize(NormalizationForm.FormD);
var chars = __Pattern.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark).ToArray();
__Pattern = new string(chars).Normalize(NormalizationForm.FormC);
List<string> Result = new List<string>();
PrincipalContext Ldap = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["LdapConnection"]);
UserPrincipal User = new UserPrincipal(Ldap);
User.UserPrincipalName = __Pattern + "*@cebi.org.pt";
PrincipalSearcher Search = new PrincipalSearcher(User);
foreach (var UserFound in Search.FindAll())
{
Result.Add(UserFound.UserPrincipalName.ToString().Split('@').First());
}
return Result;
}