2012-08-13 4 views
2

AD/LDAP에서 일부 데이터를 가져오고 ResultPropertyValueCollection 객체에 byte[]으로 반환 된 이진 속성에 문제가 있습니다.바이트에서 직렬화되지 않은 유형 찾기 []

가장 간단한 예로는 objectGUID 속성이 있습니다. byte[]이 아닌 적절한 GUID 개체에 필요합니다. 나는 쉽게 new Guid(myByteArray)라고 말할 수 있지만 이 아닌 GUID 인 다른 이진 필드 (이미지를 추측하는 것 등)가 있으면 어색한 것으로 보입니다.

다른 개체를 만들지 않고 byte[]에서 병합되지 않은 형식을 가져올 수있는 깨끗하고 정돈 된 방법이 있습니까? 또는 더 나은 : 나는 그것이 어떤 종류의 객체인지 LDAP/AD를 말해 줄 수 있습니까? 모든 속성을 처리하고 올바르게 내 시스템에 매핑 할 수있는 일반 가져 오기를 원하므로이 기능을 원합니다.

... 이것은 대개의 경우에 해당 할 수 있지만 일반적인 방법으로이를 수행 할 수 있다면 완벽 할 것입니다. 그렇지 않다면 지금은 new Guid(myByteArray)을 시도해 보는 것이 좋습니다.

+0

ARVE을 당신이 당신하여 DirectoryEntry뿐만 아니라 root.Entry.Properties, DirectorySearcher하고 DirectorySearcher 필터와 Searcher.PropertiesToLoad ("distinguishedName을")는 GUID I를 얻을 수를 만드는 방법에 대한 귀하의 코드를 게시 할 경우 우리 Active Directory와 LDAP 환경에서 BOA에 대해 지금 당장이 작업을하고 있습니다. – MethodMan

답변

3

바이트 배열이 정확히 16 바이트 길이인지 확인해야합니다. 그 외에도 GUID는 분명히 16 바이트의 배열이므로 다른 메트릭에 대해 유효성을 검사 할 수 없습니다.

실수로 다른 데이터 유형 바이트 배열의 비 직렬화에 대해 불행히도이 정보는 일반적으로 직렬화 된 바이트 배열과 함께 저장되지 않습니다. 호출 측은, 바이트 배열이 무엇인가를 벌써 알고있을 필요가있어, 스스로 캐스팅을 실시 할 필요가 있습니다.

0

내가 현재 마음에 kepp 내가 뭐하는 거지 더 많은 코드가

var sObjectGUID = entry.NativeGuid.ToString(); 

우리의 LDAP/AD 환경에서 지금이 일을하고 한 줄의 코드로이 작업을 수행 할 수 있지만, 기본적으로 나는 방법이 여기서 공유 할 수없는 비즈니스 코드이지만 SamAccount가 존재하는지 여부를 기반으로 확인을 수행하고 있습니다.

public static string SamExist(string domain, string userid) 
{ 
} 
+1

문자열에'Convert.ToString'을 호출합니까? – hvd

+0

예 AD로 작업 할 때 예 : DirectoryEntry로 작업 할 때 ActiveDirectory와 함께 매일 사용합니다. dev/stage 환경의 랩톱에서 테스트 한 결과 작동하지 않습니다. 나는 그에게 그가 찾는 정보를 얻는 방법을 보여줄 수 있었고 매우 간단하다. – MethodMan

+1

'Convert.ToString ("xxx")'가 작동하지 않는다는 것을 말하는 것이 아니라''xxx "'를 쓸 수 있다고 말하고있다. . 또는 귀하의 경우에는,'var sObjectGUID = entry.NativeGuid.ToString();'같은 일을해야합니다. – hvd

관련 문제