1

我收到错误“集合已修改;枚举操作可能无法执行。” 在所有环境 Dev、QA 和生产环境中,但不在本地开发机器上。如果我将本地应用程序指向 QA 数据库,它可以正常工作,但在指向 QA 数据库的 QA 应用程序上会出现此错误。

在我的本地机器上,我有 Windows 7 和所有其他使用 IIS 6 的环境 DEV、QA 和生产。

我不知道哪一行出现错误,因为我在本地机器上的调试模式下没有收到此错误。但这里是代码和堆栈跟踪。

foreach (var videoTag in videoModel.VideoTags.ToList())
        {
            if (videoTag.TagName != null)
            {
                // if tag already exists continue to next tag
                if (video.VideoTags.Any(x => x.TagName == videoTag.TagName)) continue;

                var newVideoTag = _entityFactory.Create<VideoTag>();
                var userName = Util.GetCurrentUserName();
                newVideoTag.TaggedBy = userName;
                newVideoTag.TaggedOn = DateTime.Now;

                var tag = _tagRepository().Get(x => x.TagName == videoTag.TagName);
                if (tag == null)
                {
                    tag = _entityFactory.Create<Tag>();
                    tag.TagName = videoTag.TagName;
                }
                newVideoTag.Tag = (Tag)tag;
                newVideoTag.TagName = videoTag.TagName;
                newVideoTag.VideoId = video.VideoId;

                video.VideoTags.Add(newVideoTag);
            }
        }

        // remove tags if removed
        var videoTagToRemove = video.VideoTags.Where(videoTag => !videoModel.VideoTags.Any(x => x.TagName == videoTag.TagName)).ToList();
        foreach (var videoTag in videoTagToRemove.ToList())
        {
            _videoRepository().DeleteVideoTag(videoTag);
            //video.VideoTags.Remove(videoTag);
        }

        var optStatus = _videoRepository().Update(video);
        if (!optStatus.Status)
        {
            throw new Exception(optStatus.ExceptionMessage); // line no  309
        }

StackTrace:在 FordTube.Web.UI.Controllers.VideoController.UpdateVideo(VideoModel videoModel) 在 E:\TFS\Projects\Ford\FordTube\Dev\Source\Ford.FordTube\Web.UI\Controllers\VideoController.cs:line 309在 lambda_method(Closure , ControllerBase , Object[] ) 在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器, Object[] 参数) 在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 参数) 在 System .Web.Mvc.Async.AsyncControllerActionInvoker.<> c_DisplayClass42.b _41() 在 System.Web.Mvc.Async.AsyncResultWrapper.<> c_DisplayClass8 1.End 1.<BeginSynchronous>b__7(IAsyncResult _) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass37.<>c_ DisplayClass39.b _33() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_ DisplayClass4f.b _49() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_ DisplayClass37.b _36( IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.End() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 在 System.Web.Mvc.Controller.<>c_DisplayClass1d 。 b _18(IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncResultWrapper.<>c_ DisplayClass4.b _3(IAsyncResult ar) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.End() at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.End() 在 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) 在 System.Web.Mvc 的 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)。 System.Web.Mvc.Async.AsyncResultWrapper 处的MvcHandler.<>c_DisplayClass8.b _3 (IAsyncResult asyncResult)。<>c_DisplayClass4.b _3 (IAsyncResult ar) 处 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1。 End() 在 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web。 System.Web.HttpApplication.ExecuteStep 处的 HttpApplication.IExecutionStep.Execute()(IExecutionStep 步骤,布尔值&完成同步)

4

0 回答 0