You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从VB.NET创建AD用户的异常中定位重复目录服务属性

Active Directory创建用户时“属性已存在”异常的排查

我维护着一段VB.NET编写的Active Directory新用户创建代码,代码通常运行正常,但在某些未知场景下会抛出异常:

指定的目录服务属性或值已存在

我需要知道如何通过捕获到的异常信息,判断具体是哪个目录服务属性重复导致的异常?我已经尝试过捕获异常详情、内部异常信息(如ex.ToString()、ex.Message)、堆栈跟踪、exception.Data等,但都无法获取到具体重复属性的细节。

现有代码

Try
    Dim dirEntry As DirectoryEntry = GetDirectoryEntry(myLocation)
    Dim newUser As DirectoryEntry = dirEntry.Children.Add("cn=" & surnames + "\, " & name, "user")
    newUser.Properties("displayName").Add(surnames & ", " & name)
    newUser.Properties("name").Add(surnames & ", " & name)
    newUser.Properties("sn").Add(surnames)
    newUser.Properties("givenName").Add(name)
    newUser.Properties("samAccountName").Add(userName)
    newUser.Properties("userPrincipalName").Add(userName & domainAccountMail)
    newUser.Properties("mailNickname").Add(userName)
    newUser.Properties("mobile").Add(myTelephone)
    newUser.Properties("mail").Add(myMail)
    newUser.Properties("targetAddress").Add("SMTP:" & userName & CDomainMailCloudGeneral)
    newUser.Properties("proxyAddresses").AddRange(New Object() {"SMTP:" & myMail, "smtp:" & userName & domainAcountMail, "smtp:" & userName & CDomainMailNubeGeneral})
    newUser.Properties("userAccountControl").Value = &H2 Or &H200
    newUser.CommitChanges()
Catch ex As Exception
    ' 现有捕获逻辑
End Try

疑问

撰写此问题时我想到,捕获块应该针对特定异常类型,但我不知道具体是哪种异常;是否应该先记录ex.GetType().ToString()来获取异常类型,然后修改捕获块以捕获特定异常,从而获取更多细节?这是否可行?


内容的提问来源于stack exchange,提问作者Roger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:25:37