Tôi đang gặp một số vấn đề với mã nhằm tìm người dùng trong Active Directory bằng cách tìm kiếm trên địa chỉ email của họ. Tôi đã thử 2 phương pháp nhưng đôi khi tôi thấy rằng phương thức FindOne() sẽ không trả lại bất kỳ kết quả nào trong một số trường hợp. Nếu tôi tra cứu người dùng trong GAL trong Outlook, tôi sẽ thấy địa chỉ email SMTP được liệt kê.Phương pháp đúng để tìm kiếm người dùng AD theo địa chỉ email từ .NET
Mục tiêu cuối cùng của tôi là xác nhận rằng người dùng tồn tại trong AD. Tôi chỉ có địa chỉ email làm tiêu chí tìm kiếm, vì vậy không có cách nào để sử dụng tên hoặc họ.
Phương pháp 1: Sử dụng tài sản mail:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Cách 2: proxyAddresses tài sản:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
tôi đã cố gắng thay đổi trường hợp của các đầu vào địa chỉ email nhưng nó vẫn không trả lại một kết quả. Có vấn đề gì ở đây với trường hợp nhạy cảm không? Nếu vậy, cách tốt nhất để giải quyết nó là gì?
Tôi nghĩ rằng tôi đã tìm thấy vấn đề. DirectoryEntry.Path đã được dò tìm đến một miền cụ thể. Tôi đã thay đổi mã để sử dụng Danh mục chung và tìm kiếm đang hoạt động. Tôi sẽ quay lại và cập nhật sớm. Câu trả lời trên thư so với proxyAddresses được chào đón nếu ai đó có bất cứ điều gì để thêm. –