UpdatePanel parece lutar com enorme de dados como AsynPostBack. jSonSerializer maxLength não ajuda
-
07-07-2019 - |
Pergunta
Eu tenho um ASP.NET 3.5 App e tentando atualizar um painel de atualização que tem um controle personalizado aninhado. Em que o controle personalizado é um ComponentArt Cinge, que é preenchido por quase 13MB de dados (Sim, eu poderia chunck que ...) neste Update.
Eu tenho um botão escondido wihtin a atualização do painel, que eu desencadear pela JS do lado do cliente, quando eu preciso o UpdatePanel e da grade.
Quando eu chamar o método Update durante a asyncPostback com Updatepanelxyz.Update (), então eu fico mais tarde no processo de asyncPostBackError dizendo, que o JSonSerializer não pode hanlde essa quantidade de dados. I deve aumentar o valor especificado.
De fato. Entendido. Mas quando eu mudar este valor no web.config, então ele só faz o trabalho até ao redor de 8 MB, mas não mais. Existe um limite para o JSonSerializer nesse caso. Eu definir o valor para o valor máximo de Int32, que é o tipo de 1000x do valor padrão, que já é o suficiente para 4MB de dados serializados.
Todas as sugestões? Qualquer maneira de forçar o serializador para que isso aconteça? Qualquer maneira de usar outro Serializer?
Cheers, Steve
Solução
Sua melhor aposta é para alterar a propriedade ScriptingJsonSerializationSection.MaxJsonLength na sua seção web.config.
O padrão é 102400 personagens, em contraste com a classe limite JsonSerializer de 2097152 caracteres.
Veja:
JsonSerializer propriedade de classe maxJsonLength
e
seção de configuração JsonSerialization propriedade comprimento máximo
Como eu mencionei acima, alterando a propriedade seção de configuração é a única maneira de ir infelizmente.
Outras dicas
Cara, 1 MB de dados é demais - por que diabos você precisa 13
Eu realmente acho que você precisa refatorar seu ui. Eu não me importo o quão rápido sua rede é que é coisa apenas louco!
Eu concordo absolutamente a camada necessidade UI e DataAccess um refactor, mas por um curto prazo eu estava apenas procurando uma solução simples e rápida para ajudar o meu cliente até a próxima atualização do software sai.