由于单引号导致LDAP查询失败

时间:2009-01-30 22:11:55

标签: ldap quotes

我正在尝试使用以下c#代码在Active Directory中找到一名员工:

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

当我为员工使用姓氏中的单引号(例如“O'Connor”)运行此操作时,我收到以下错误:

AdsDsoObject'失败,没有可用的错误消息,结果代码:DB_E_NOTABLE(0x80040E37)。

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

我做错了什么?需要帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

替换它自己的行。

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

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

答案 1 :(得分:0)

你试过了:

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

而不是:

Replace("'", "\'")

(那里有一个额外的单引号。)