我收到错误“集合已修改;枚举操作可能无法执行。” 在所有环境 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, IDictionary
2 参数) 在 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.WrappedAsyncResult
1.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.WrappedAsyncResult
1.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 步骤,布尔值&完成同步)