ASP AD查询故障处理:AD用户缺少initials属性导致脚本运行崩溃
问题根源
当AD用户未配置initials属性时,AD查询返回的该字段值为Null,VBScript中Null参与字符串拼接会触发类型错误,同时会导致后续生成的JS代码出现语法异常。
修复方案
步骤1:处理initials空值,统一转为空字符串
修改原有varInitials赋值逻辑,增加Null判断:
If NOT (rsUser.BOF AND rsUser.EOF) Then Dim varInitials Session("userAccess") = 1 varEmail = rsUser.Fields.Item("mail").Value varEmployeeID = rsUser.Fields.Item("employeeID").Value varFirstName = rsUser.Fields.Item("givenName").Value ' 替换原有varInitials赋值逻辑,新增Null判断 If IsNull(rsUser.Fields.Item("initials").Value) Then varInitials = "" Else varInitials = Trim(rsUser.Fields.Item("initials").Value) End If varLastName = rsUser.Fields.Item("sn").Value varOffice = rsUser.Fields.Item("physicaldeliveryofficename").Value ' 原有IsEmpty判断已无意义,可以删除,如有需要可替换为下一行 ' varInitialsChk = (varInitials = "") Session.Timeout = 60 Else Session("userAccess") = 0 ' End valid user check End If
步骤2:优化姓名拼接逻辑,避免多余空格
在生成JS代码前先拼接好最终要展示的姓名,避免空initials导致姓名末尾多空格:
Dim fullNameDisplay If varInitials <> "" Then ' 有中间名缩写时才加空格拼接 fullNameDisplay = varLastName & ", " & varFirstName & " " & varInitials Else ' 无中间名缩写时直接拼接姓和名 fullNameDisplay = varLastName & ", " & varFirstName End If
步骤3:修改JS生成代码
直接使用预处理好的fullNameDisplay变量,同时建议将字符串拼接符从+改为VBScript推荐的&,避免类型隐式转换出错:
"if(emptyString.test(theForm.ctl00$ctl00$mpcSingleContent$cntrlID_23172.value)) {" & vbCrLf & _ " theForm.ctl00$ctl00$mpcSingleContent$cntrlID_23172.value = """ & fullNameDisplay & """" & vbCrLf & _ "}" & vbCrLf & _
内容的提问来源于stack exchange,提问作者iamfakhar
相关产品推荐
相关产品推荐

