ForEach循环(C#)缺少第一项
我有一个WCF服务,其中包括一个foreach循环:ForEach循环(C#)缺少第一项,c#,wcf,foreach,C#,Wcf,Foreach,我有一个WCF服务,其中包括一个foreach循环: foreach (var fileName in questionnaireRequest.StoreItem.Files) { //// Processing done here } 当在本地运行时,这可以正常工作,并且集合中的每个项都会被处理 但是,在服务器上,始终跳过集合中的第一项 一个真正的难题 我能看到的唯一区别是,我们在本地运行.Net版本4.5.2,服务器运行的是版本4.5.1 有人见过这种行为吗?我们终于找到了解决方案
foreach (var fileName in questionnaireRequest.StoreItem.Files)
{
//// Processing done here
}
当在本地运行时,这可以正常工作,并且集合中的每个项都会被处理
但是,在服务器上,始终跳过集合中的第一项
一个真正的难题
我能看到的唯一区别是,我们在本地运行.Net版本4.5.2,服务器运行的是版本4.5.1
有人见过这种行为吗?我们终于找到了解决方案-此解决方案中包含一个负载平衡器,因此文件可以存储在两台服务器中的一台,由负载平衡器确定。在本例中,有时文件存储在一台服务器上,但对web服务的下一次调用在第二台服务器上运行
两种可能的解决方案—在负载平衡器上启用粘性会话,或者为两台服务器都可以访问的文件创建一个共享文件夹。否。您需要进行一些调试。当然,这不是.NET版本的问题。我建议您调试代码并比较服务器和本地PC中的
questionnaireRequest.StoreItem.Files
。foreach不能跳过项目。它使用(仅向前迭代)集合中提供枚举数的项。文件的类型是什么?您是如何验证它是否被跳过而不是不在集合中的?您是否可以发布代码,说明questionnaireRequest.StoreItem.Files在foreach循环之前是如何初始化/修改的?您需要调试服务并检查列表的内容-它没有缺少第一项。要么你的证据是错误的,要么你期望的项目不存在——foreach在服务器上的行为没有任何不同。