我尝试使用下面的代码更新 AD 中的员工照片,但收到一条错误消息:
System.DirectoryServices.DirectoryServicesCOMException:'约束 发生违规。
00002082:AtrErr:DSID-03151EFE,#1:0:00002082:DSID-03151EFE, 问题 1005 (CONSTRAINT_ATT_TYPE),数据 0,Att 160023 (缩略图):len 181708
我已经检查过我可以对员工照片进行修改,因为我正在使用外部工具对我的帐户进行修改。我已经使用这种方法来修改用户的其他字段,例如电子邮件或电话号码,没有任何问题。我认为问题出在将字节值分配给字段之间,但我不确定。谢谢您的合作。
public static void UpdatePhoto(System.DirectoryServices.DirectoryEntry objADAM, string username)
{
DirectorySearcher query = new DirectorySearcher(objADAM);
query.PropertiesToLoad.Add("thumbnailPhoto");
query.Filter = "(&(objectClass=user)(sAMAccountName=" + username + "))";
SearchResult result = query.FindOne();
System.DirectoryServices.DirectoryEntry user = result.GetDirectoryEntry();
System.IO.FileStream inFile = new System.IO.FileStream("employeePhoto.PNG", System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] binaryData = new byte[inFile.Length]; // Read image into byte array
int bytesRead = inFile.Read(binaryData, 0, (int)inFile.Length);
inFile.Close();
user.Properties["thumbnailPhoto"].Clear();
user.Properties["thumbnailPhoto"].Add(binaryData);
user.CommitChanges();
}
我发现问题了。使用此方法更改照片时,照片大小限制为100KB