0

从 web 服务返回信息。我为返回对象创建了一个类。但是在将结果分配给每个列表项时,我收到以下错误消息。

调用我的网络服务时,我返回以下消息:

System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。参数名称:在 System.ThrowHelper.ThrowArgumentOutOfRangeException() 的索引
在 System.Collections.Generic.List`1.get_Item(Int32 索引) 在 NewUser.ADMethods.GetUserInfo(String userName)

请帮忙!

public class UserInformation
{
    public string givenname { get; set; }
    public string surname { get; set; }            
}

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<UserInformation> GetUserInfo(string userName)
{
    // Gather User Info
    // Invoke Directory Searcher & Directory Entry
    DirectorySearcher ds = new DirectorySearcher();
    // Apply filter to search
    ds.Filter = "(&(objectCategory=user)(samaccountname=" + userName + "))";

        SearchResult sr = ds.FindOne();
        List<UserInformation> UserInfo = new List<UserInformation>();
        UserInfo[0].givenname = sr.Properties["givenname"].ToString();
        return UserInfo;
}
4

2 回答 2

1

您的问题是您正在创建一个列表,该列表最初为空,然后尝试访问尚不存在的第一个项目的值。

您必须创建该项目,然后将其添加到列表中:

List<UserInformation> UserInfo = new List<UserInformation>();
UserInformation item = new UserInformation();
item.givenname = sr.Properties["givenname"].ToString();
UserInfo.Add(item);
于 2012-09-14T04:01:15.513 回答
1

我认为你的问题在这里

List<UserInformation> UserInfo = new List<UserInformation>(); 
UserInfo[0].givenname = sr.Properties["givenname"].ToString();

您正在创建一个没有条目的新列表,然后直接尝试访问不存在的第一个条目。

于 2012-09-14T04:02:07.077 回答