索引超出了数组VB .NET的范围

时间:2015-02-10 15:01:26

标签: vb.net sql-server-2008

我收到以下错误“索引超出了数组的范围”每当我键入以下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")

1 个答案:

答案 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进行错误处理。