从webservice返回信息。我为返回对象创建了一个类。但是,在将结果分配给每个列表项时,我收到以下错误消息。
在调用我的webservice时,系统会返回以下消息:
System.ArgumentOutOfRangeException:索引超出范围。一定是 非负面且小于集合的大小。参数名称: System.ThrowHelper.ThrowArgumentOutOfRangeException()的索引 在System.Collections.Generic.List`1.get_Item(Int32 index)at 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;
}
答案 0 :(得分:1)
您的问题是您正在创建一个最初为空的列表,然后尝试访问尚不存在的第一个项目的值。
您必须创建项目,然后将其添加到列表中:
List<UserInformation> UserInfo = new List<UserInformation>();
UserInformation item = new UserInformation();
item.givenname = sr.Properties["givenname"].ToString();
UserInfo.Add(item);
答案 1 :(得分:1)
我认为你的问题在这里
List<UserInformation> UserInfo = new List<UserInformation>();
UserInfo[0].givenname = sr.Properties["givenname"].ToString();
您正在创建一个没有条目的新列表,然后直接尝试访问第一个条目,该条目不存在。