2

AD/LDAP からデータをインポートしていますbyte[]が、ResultPropertyValueCollectionオブジェクトのように返されるバイナリ属性に問題があります。

最も単純な例は、objectGUID 属性です。ではなく、適切な GUID オブジェクトで必要byte[]です。簡単に言うことができますが、 GUIDではないnew Guid(myByteArray)他のバイナリ フィールド (画像などを推測しています) がある場合、それは不器用に思えます。

byte[]別のオブジェクトを作成しようとするだけでなく、シリアル化されていない型を取得するクリーンで整然とした方法はありますか? またはそれ以上: LDAP/AD にオブジェクトの種類を教えてもらうことはできますか? すべての属性を処理し、それらを自分のシステムに正しくマップできる汎用インポートが必要なため、これが必要です。

...これは一種の特殊なケースかもしれませんが、これを一般的な方法で行うことができれば完璧です。そうでない場合は、とりあえず a を試してキャッチすることに固執しますnew Guid(myByteArray)

4

2 に答える 2

3

バイト配列の長さが正確に 16 バイトであることを確認する必要があります。それ以外では、GUID は単純に 16 バイトの配列であるため、他のメトリックに対して検証することはできません。

別のデータ型のバイト配列を誤ってデシリアライズした場合、残念ながら、この情報は通常、シリアライズされたバイト配列には保存されません。呼び出し元は、バイト配列が何であるかを既に知っており、キャストを自分で行うことが期待されています。

于 2012-08-13T14:41:28.613 に答える
0

これは 1 行のコードで実行できます。現在、LDAP/AD 環境でこれを実行しています。

var sObjectGUID = entry.NativeGuid.ToString();

kepp は、私が実行しているコードが他にもあることを念頭に置いていますが、基本的にはビジネス コードにここで共有できないメソッドがありますが、SamAccount が存在するかどうかに基づいてチェックを行っています。

public static string SamExist( string domain, string userid)
{
}
于 2012-08-13T14:45:52.647 に答える