5

この質問に適切なタイトルを付けたことを願っています。ここに混合主題のビット。

C#ActiveDirectoryユーザーを作成する関数を作成しました。次のように表示する必要があるLDAP文字列を使用します。

userinfo.displayName = "Surname, Firstname"

CN=" + userinfo.displayName, "user"

文字列にカンマが含まれているため、次の例外メッセージが返されます。

無効なdn構文が指定されました。

文字列が適用された後の完全なdnは次のとおりです

"CN=Surname**,** Lastname,OU=Users,DC="Foo",DC="net"

一般名CN=のコンマが問題です...

C#が文字列のコンマを無視できる方法はありますか?効果的にそれを逃れる。

4

2 に答える 2

11

識別名の無効な文字をエスケープするには、先頭にスラッシュ('\')を付けます。たとえば、上記の識別名は次のようになります。

"CN=Surname\, Lastname,OU=Users,DC=Foo,DC=net"

RFC 4514のセクション2.4によると:ライトウェイトディレクトリアクセスプロトコル(LDAP):識別名の文字列表現、文字、、、、、、、、、、、、および先頭のスラッシュでエスケープ"できます。その他の英数字以外の文字は、次の形式で表示する必要があります。XXは、UTF8文字エンコードの16進数です。例については、セクション4を参照してください。#+,;<=>\\XX

X500DistinguishedNameクラス(System.Security Cryptography内)には、この状況で役立つParseまたはEscapeメソッドがないように見えることに注意してください。

于 2012-09-23T07:39:14.727 に答える
6

特定の文字は、RFC4514によると、1つの円記号ではなく、円記号()の後に2桁の16進数を付けてエスケープする必要があります。多くのディレクトリディレクトリサーバーはをサポートしていますが、標準化されていないため、LDAPクライアントはこの表記を使用しないでください。一部のサーバーでは機能しますが、他のサーバーでは機能せず、クライアントは特定のサーバーのソフトウェアと通信していると想定してはなりません。\\,

于 2012-09-23T10:50:27.367 に答える