Ошибка запроса LDAP из-за одинарной кавычки - PullRequest
2 голосов
/ 31 января 2009

Я пытаюсь найти сотрудника в Active Directory, используя следующий код c #:

"Select userPrincipalName, ADsPath, Department, Mail,
 HomeMDB, cn, ssn FROM 
'LDAP://" + DomainName + "'
WHERE objectCategory = 'person' and 
sAMAccountName = '" + UserName.Replace("'", "''") + "'";

Когда я запускаю это для сотрудника с одинарной кавычкой в ​​фамилии (например, «О'Коннор»), я получаю следующую ошибку:

AdsDsoObject 'не выполнен, сообщение об ошибке отсутствует, код результата: DB_E_NOTABLE (0x80040E37).

I also tried Replace("'", "\''"), nothing is working. 

Что я делаю не так? нужна помощь.

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 февраля 2009

Сделайте замену на собственной линии.

Username.Replace("'", "\'");

"Select userPrincipalName, ADsPath, Department, Mail, HomeMDB, cn, ssn FROM 
'LDAP://" + DomainName + "' WHERE objectCategory = 'person' and 
sAMAccountName = '" + UserName + "'";
0 голосов
/ 31 января 2009

Вы пробовали:

Replace("'", "\''")

А не:

Replace("'", "\'")

(там есть дополнительная одиночная кавычка).

...