none
Resolver este erro Operation is not valid due to the current state of the object. RRS feed

  • Pergunta

  • bom dia ,pessoal alguem conhece ou já se deparou com este tipo de erro ,pois eu tenho na tela um objeto do tipo Repeater e que populo com um Datatable ,ai tenho um checkbox onde no  evento OnCheckedChanged eu marco todos os check dentro do Repeater ate ai tudo bem pois esta funcionando o erro ocorre quando desmarco o check todos o sistema deveria de desmarcar todos checks dentro do repeater mas da erro.no inicio fiz com for (int i = 0; i < grdvalidade.Items.Count; i++) e achei que o erro poderia ser em relação a variavel int pois quando carrego no repeater até no maximo 300 itens não da o erro mas acima desta quantidade de itens da este erro tipo 301 itens no grid.

       protected void chkseltodos_OnCheckedChanged(object sender, EventArgs e)
        {

            try
            {
                //Pegar todos os itens do repeater
                foreach (RepeaterItem item in grdvalidade.Items)
                {

                    CheckBox chk = (CheckBox)item.FindControl("chkselecao");
                    if (chk.Checked == false)
                    {
                        chk.Checked = true;
                    }
                    else
                    {
                        chk.Checked = false;
                    }
                }

            }
            catch (Exception ex)
            {

                throw new Exception("Gerado erro ao selecionar os itens :" + ex.StackTrace);
            }

        }

    Operation is not valid due to the current state of the object.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: Operation is not valid due to the current state of the object.

    Source Error:

    quarta-feira, 30 de maio de 2012 11:59

Respostas

  • Entendo, pelo que li o problema pode ocorrer quando uma grande quantidade de campos de form (form fields) são colocados dentro de um Repeater por exemplo, foi um dos casos que foi relatado e resolvido desta forma, tente aumentar o valor de 2000 e veja se funciona.


    Rodrigo Reis Ferreira
    Microsoft Certified

    quinta-feira, 31 de maio de 2012 16:38
  • Com base na thread abaixo:

    "However, if the problem occurs above 1000 fields, what happens if I change to 5000. Is my site unsecure?

    Do you have more than 1000 fields as top-level items on your page?  In general we've found that pretty rare (especially for public internet sites).  Note that you can have any level of nesting within your fields (meaning you can have infinitely nested JSON within each of the 1000 fields)."

    A pergunta é identica a sua, a resposta é que é muito raro este valor ultrapassar os 1000 campos, teoricamente você pode utilizar valores mais altos, mas como esta variável esta associada a ataques DoS e foi alterada justamente em uma atualização de segurança da Microsoft, acredito que não seja adequado trabalhar com tantos campos, principalmente se for uma aplicação pública. Talvez trabalhar de uma forma diferente buscando uma otimização nesse sentido seja algo a se pensar.

    Recomendo navegar mais e procurar mais casos.

    http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx


    Rodrigo Reis Ferreira
    Microsoft Certified


    sexta-feira, 1 de junho de 2012 18:53

Todas as Respostas

  • Faz um teste primeiro, adiciona o código abaixo no seu web.config:

    <appSettings>
        <add key="aspnet:MaxHttpCollectionKeys" value="2000" />
     </appSettings>

    Alguns usuario tiveram problemas semelhantes ao seu e conseguiram resolver assim, como esse usuário:

    "Wow, thank you so much! This helped solve my issue, one of my aspx pages, where the I had lot of form fields inside a repeater. "

    Problema relacionado com uma grande quantidade de dados no POST.

    Fonte:

    http://geekswithblogs.net/renso/archive/2012/01/19/operation-is-not-valid-due-to-the-current-state-of.aspx


    Rodrigo Reis Ferreira
    Microsoft Certified



    quarta-feira, 30 de maio de 2012 19:42
  • bom dia obrigado pela ajuda ,mas esta opção já adicionei em meu web.conf mas o problema persiste você tem ideia o que causa este tipo de erro.
    quinta-feira, 31 de maio de 2012 14:15
  • Entendo, pelo que li o problema pode ocorrer quando uma grande quantidade de campos de form (form fields) são colocados dentro de um Repeater por exemplo, foi um dos casos que foi relatado e resolvido desta forma, tente aumentar o valor de 2000 e veja se funciona.


    Rodrigo Reis Ferreira
    Microsoft Certified

    quinta-feira, 31 de maio de 2012 16:38
  • pode ser que a sua quantidade de registro seja maior.

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    quinta-feira, 31 de maio de 2012 16:51
    Moderador
  • pode ser o estranho é que fiz de forma manual um array com 1000 posições e populei o Repeater e não deu erroo erro no ocorre quando marco o chkseltodos que é para percorrer o repetidor e desmarcar os check quando clico a 1° vez o sistema faz o processo normal percorre todo repeater e marca todos checks independente do total de linhas fiz testes até 10000 registros mas o contrario para desmarcar todos da erro.

    sexta-feira, 1 de junho de 2012 16:27
  • boa tarde ,Cara não vai acreditar aumentei o valor para 10000 e testei com no maximo 1000 itens não apresentou erro bleza.ai fiz outro teste com uma relação de 2795 itens mas deu o erro então aumentei mais ainda para 50000 ai testei novamente e não apresentou o erro.1° duvida o que esla opção no web.conf faz e outra ciosa se eu aumentar mais ainda tem algum problema pois vou trabalhar com valores superiores a 10000 itens em cada pesquisa por item .
    sexta-feira, 1 de junho de 2012 18:14
  • qual a fnalidade desta chavee se tem problema se eu aumentar mais em torno de 50000 para resolver o problema .
    <add key="aspnet:MaxHttpCollectionKeys" value="2000" />
    sexta-feira, 1 de junho de 2012 18:16
  • Com base na thread abaixo:

    "However, if the problem occurs above 1000 fields, what happens if I change to 5000. Is my site unsecure?

    Do you have more than 1000 fields as top-level items on your page?  In general we've found that pretty rare (especially for public internet sites).  Note that you can have any level of nesting within your fields (meaning you can have infinitely nested JSON within each of the 1000 fields)."

    A pergunta é identica a sua, a resposta é que é muito raro este valor ultrapassar os 1000 campos, teoricamente você pode utilizar valores mais altos, mas como esta variável esta associada a ataques DoS e foi alterada justamente em uma atualização de segurança da Microsoft, acredito que não seja adequado trabalhar com tantos campos, principalmente se for uma aplicação pública. Talvez trabalhar de uma forma diferente buscando uma otimização nesse sentido seja algo a se pensar.

    Recomendo navegar mais e procurar mais casos.

    http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx


    Rodrigo Reis Ferreira
    Microsoft Certified


    sexta-feira, 1 de junho de 2012 18:53
  • bom dia ,desde já agradeço a ajuda a principio deixei assim pois não é uma aplicação publica e resolveu o problema de imediato .valeu
    segunda-feira, 4 de junho de 2012 10:47
  • Obrigado, coloquei no meu Web.config e funcionou perfeito.
    terça-feira, 20 de maio de 2014 15:25
  • Olá, eu tive o mesmo problema mas com uma GridView.

    No meu caso eu resolvi implementando uma paginação na grid.

    quarta-feira, 12 de novembro de 2014 15:52