我收到以下错误“索引超出了数组的范围”每当我键入以下System.IndexOutOfRangeException的密码时:索引超出了数组的范围。 对这里有什么不妥的想法?
If Membership.ValidateUser(Login1.UserName, Login1.Password) Then
'Has the password expired?
Dim usrInfo As MembershipUser = Membership.GetUser(Login1.UserName)
Dim roles As String() = System.Web.Security.Roles.GetRolesForUser(usrInfo.UserName.ToString())
If roles(0).Equals("User") Then
Dim daysSincePwdChange As Integer = Convert.ToInt32(DateTime.Now.Subtract(usrInfo.LastPasswordChangedDate).TotalDays)
If daysSincePwdChange > SecurityUtils.DefaultPasswordExpiryInDays Then
'Password expired, send user to change password
'MsgBox("expire passwd")
答案 0 :(得分:0)
System.Web.Security.Roles.GetRolesForUser未返回传递给它的值的任何结果,因此您的数组为空。 当您在数组中查找第一个值时 如果是角色(0).Equals(“用户”)...... 它正在抛出错误。
您可以通过添加类似
的内容来处理错误If NOT roles.getLength() = 0 Then
If roles(0).Equals("User") Then
Dim daysSincePwdChange...
或使用Try / Catch进行错误处理。