none
ASP.NETでの「コレクションが変更されました。列挙操作は実行されない可能性があります。」について RRS feed

  • 質問

  • Visual Studio Professional 2012 、 .Net Framework4.5 でASP.NETにて

    Webアプリケーションを作成しています。

    運用時に以下の例外が発生する場合があるのですが、常に再現するという訳ではなく、

    発生要因が分かっていません。

    ----------------------------------------------------------------------------------------------

    System.Web.HttpUnhandledException (0x80004005): 種類 'System.Web.HttpUnhandledException' の例外がスローされました。 ---> System.InvalidOperationException: コレクションが変更されました。列挙操作は実行されない可能性があります。
       場所 System.Collections.Generic.List`1.Enumerator.MoveNextRare()
       場所 System.Linq.Enumerable.WhereListIterator`1.MoveNext()
       場所 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       場所 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       場所 AjaxControlToolkit.ToolkitScriptManager.OnLoad(EventArgs e)
       場所 System.Web.UI.Control.LoadRecursive()
       場所 System.Web.UI.Control.LoadRecursive()
       場所 System.Web.UI.Control.LoadRecursive()
       場所 System.Web.UI.Control.LoadRecursive()
       場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       場所 System.Web.UI.Page.HandleError(Exception e)
       場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       場所 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       場所 System.Web.UI.Page.ProcessRequest()
       場所 System.Web.UI.Page.ProcessRequest(HttpContext context)
       場所 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       場所 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

    ----------------------------------------------------------------------------------------------

    なお、複数ユーザにて同時アクセスすると発生する頻度が高くなるようです。

    上記の例外理由について情報および対応方法があればご教示ください。よろしくお願いします。


    • 編集済み RE-JAPAN 2014年5月29日 8:03
    2014年5月29日 8:03

すべての返信

  • foreach でコレクションを処理している時にコレクションに変更を加えると IEnumerator.MoveNext が InvalidOperationException をスローします。

    そういう心当たりがないか考えて、問題の箇所を探してみてください。

    2014年5月29日 8:31
  • foreach でコレクションを処理している時にコレクションに変更を加えると IEnumerator.MoveNext が InvalidOperationException をスローします。

    そういう心当たりがないか考えて、問題の箇所を探してみてください。

    現状で心当たりとなりそうな個所が見つかりませんでした。

    例外がToolkitScriptManager.OnLoadの内部で発生しているようであり、

    問題の箇所が特定できていない状態です。

    なお、ToolkitScriptManagerはマスタページで以下のように記述しています。

            <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization ="true" EnableScriptLocalization ="true" >
                <Scripts>
                <asp:ScriptReference Name="jquery" />
                <asp:ScriptReference Name="jquery.ui.combined" />
                <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
                <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
                <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
                <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
                <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
                <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
                <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
                <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
                <asp:ScriptReference Name="WebFormsBundle" />
               </Scripts>
            </asp:ToolkitScriptManager>

    何か心当たりとなりそうな内容があればご教示ください。よろしくお願いします。


    • 編集済み RE-JAPAN 2014年5月30日 1:05
    2014年5月30日 1:04