首页 > 解决方案 > 在 foreach 循环中使用 Dictionary.add 时,执行似乎无缘无故停止

问题描述

这真的让我感到困惑,因为我无法弄清楚我的方法执行突然停止的任何明显原因。

我下面的方法相对简单,我所做的只是遍历对象集合并根据当前数据将一些数据添加到新字典中。

public Dictionary<string, string> MapValidationErrorToIdentifiers(List<ErrorField> errors)
        {
            var mappings = new Dictionary<string, string>();

            foreach (var error in errors)
            {
                string identifier;
                if (error.CollectionIndex == "")
                {
                    identifier = error.Section + "-" + error.FieldName.Replace(" ", "-");
                }
                else
                {
                    identifier = error.Section + "-" + (error.CollectionIndex + 1) + "-" + error.FieldName.Replace(" ", "-");
                }
                identifier = identifier.ToLower();
                mappings.Add(identifier, error.Message);
            }

            return mappings;
        }

输入对象List<ErrorField>ErrorField简单的 DTO 对象组成。

public class ErrorField
    {
        public string FieldName { get; set; }
        public string Section { get; set; }
        public string CollectionIndex { get; set; }
        public string Message { get; set; }
    }

在一个实例中测试此方法的过程中,errors输入对象包含 12 个ErrorField对象,foreach 成功完成了一次迭代,并将键值对添加到字典中。然后在第二次迭代中,该方法一直运行到mappings.Add(identifier, error.Message);调用为止,此时调试器完全停止并且不再执行。

这里奇怪的是执行只是停止,没有抛出异常或错误。此方法是较大的 ASP.NET 项目的一部分,并且此方法在控制器中使用。当执行停止时,它会导致我的端点返回 404。不确定这是否相关。

标签: c#asp.net

解决方案


推荐阅读