В некоторой точке приложения MVC я выполняю поиск в Active Directory, чтобы получить учетную запись пользователя, содержащую этот шаблон. Проблема в том, что у моей компании некоторые пользователи имеют акценты/диакритические знаки в своем UserPrincipalName, и когда я выполняю поиск, с акцентами эти пользователи не существуют. Но если я выполняю поиск без акцентов, приложение найдет этих пользователей.C# 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;
}
В чем проблема с решениями в ссылках, с которыми вы связались? –
Строка осталась прежней. –
Можете ли вы опубликовать свой код в редактировании? –