[Code]Active Directory: DirectoryEntry Update Property

Active Directory: DirectoryEntry Update Property

今天遇到一個處理Active Directory的 bug,

原本的Code是

	if(value!=string.Empty){
    usr.Properties[key].Value = value;
}

遇到空白就不處理 ?! 即然原因不可考 ,

只好將其導向正軌 , 程式碼如下,

不過因為偷懶, 所以只接受type::string的value參數 …

若有其它型別參數, 也可以如法炮製

 

	private void UpdateUserProperty(DirectoryEntry usr, string key, string value) {
            if (usr == null) {
                return;
            }
            if (usr.Properties.Contains(key)) {
                if (!usr.Properties[key].Value.Equals(value)) {
                    if (value == null || string.Empty.Equals(value.Trim())) {
                        usr.Properties[key].RemoveAt(0);
                    } else {
                        usr.Properties[key].Value = value;
                    }
                }
            } else {
                if (value == null || string.Empty.Equals(value.Trim())) {
                    // If the property not exist and value is empty, doesn't need to add property.
                }else{
                    usr.Properties[key].Add(value);
                }
            }
        }

 

各欄位更新完要記得CommitChanges才會生效喔

	usr.CommitChanges();