获取List<;的索引超出范围错误;T>;同时进行负载测试.这似乎是线程问题
本文关键字:负载 测试 似乎是 问题 线程 索引 lt List 获取 错误 范围 | 更新日期: 2023-09-27 18:26:23
在我们的应用程序中,我们接收一个集合(List)作为WCF Web方法的输入参数,该输入参数按原样传递给StaticClass.StaticMethod,而不传递给任何本地成员。在静态方法内部,第一行检查输入参数List的计数是否大于零,下一行我正在检索第一个元素(第0个索引),但在使用loadrunner测试此应用程序时,它抛出了"index out of range"错误。乍一看,这似乎是一个简单的竞赛条件,但负载运行者通过网站访问此WCF服务,并且网站无法传递空集合。有什么想法吗?
// Code snippet
public static List<X> GetCashBalances(List<Y> IPReceivedAtWebMethod)
{
List<X> list = new List<X>();
if IPReceivedAtWebMethod== null) return list;
if IPReceivedAtWebMethod.Count <= 0) return list;
// The below line throws Index out of range error.
SomeValue s = AdminHelper.GetSomeValue(IPReceivedAtWebMethod[0].member1);
// …
}
下面给出了调用上述方法的WCF服务方法以供参考,
public class CashService : ICashService
{
public ServiceResponse GenerateCashBalances(RequestToWCFService request)
{
ServiceResponse response = DataContractFactory.InstanceOfServiceResponse();
try
{
// This is the code calling the method I referred in the question which is throwing Index out of range Error
response._someList = StaticClass.GetCashBalancesReferredInQuestion(request._someList);
// I hope this would not do any harm to _someList
List<CashBalance> list = response._someList.ConvertAll(c => (CashBalance)c);
// Second call using the same collection however the list is not alterned inside this method too.
response.someActivity = AdminController.GetActivity(request._someList).ToString("O");
response.ResponseCode = WcfServiceCodes.OK_RESPONSE;
}
catch (Exception ex)
{
// log error
}
return response;
}
请求对象的详细信息
[DataContract]
public class RequestToWCFService : BaseRequest
{
[DataMember]
public List<AccountGroup> _someList { get; set; }
}
我来看看调用方法是如何使用列表的。很容易说:
var balances = GetCashBalances(_someList);
其中CCD_ 1是被各种不同方法消耗的某个静态字段。如果有任何东西从_someList
中删除了一个元素,那么您很容易出现所报告的问题。
看看这是否有帮助:
var list = _someList.ToList(); // create a local copy.
var balances = GetCashBalances(list);