Respondido Asp Net Chart

  • terça-feira, 17 de abril de 2012 20:48
     
     

    Pessoal;

    No meu trabalho tem uma aplicação onde utilizamos o componente asp net Chart, porém, esses gráficos são criados dinamicamente conforme dados retornados do banco. O problema é que ao publicar minha aplicação no IIS toda vez que acesso uma dessas telas que criam gráficos, os gráficos são gerados e armazenados na pasta que a página está publicada, ou seja, se tem a página "RelatorioFuncionario", é recuperada a pasta que essa página está e os gráficos gerados são gravados nessa pasta para depois serem exibidos na tela.

    O maior problema nisso tudo é que com 5 acessos são gerados aproximadamente 300 gráficos. Daqui um mês, com milhares de acessos à página terei milhões de imagens na pasta.

    Sendo assim, preciso fazer um processo para apagar esses gráficos todos os dias e pelo fato de existirem umas 5 telas que utilizam esse método para exibir gráficos, seria meio inviável a cada acesso verificar os gráficos do dia anterior para apagá-los.

    Alguém aí que já passou por isso tem uma ideia simples e eficiente de fazer isso?


    Deise Vicentin
    "Eu não procuro saber as respostas, procuro compreender as perguntas." Confúcio

Todas as Respostas

  • quarta-feira, 18 de abril de 2012 12:09
    Moderador
     
     
    Deise que eu lembre vc pode fazer uma config no webconfig para ele, vc tentou chamar um dispose no final para ver se apaga?

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

  • quarta-feira, 18 de abril de 2012 12:19
     
      Contém Código
    Deise que eu lembre vc pode fazer uma config no webconfig para ele, vc tentou chamar um dispose no final para ver se apaga?

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

    Seilor,

    Ainda não tentei isso.

    O que tenho de configuração relacionado à gráficos (no web.config) na aplicação é isso:

    <appSettings> <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" /> </appSettings>

    <system.webServer> <handlers> <remove name="ChartImageHandler" /> <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </handlers> </system.webServer>

    <system.web>

        <httpHandlers>

          <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            validate="false" />
        </httpHandlers>

    </system.web>

    Para os gráficos que são adicionados na página como um controle fixo isso funciona, ele cria a imagem do gráfico temporariamente, nunca fica lixo no servidor.

    Vou tentar fazer o dispose pra ver o que acontece.

    Valeu!


    Deise Vicentin
    "Eu não procuro saber as respostas, procuro compreender as perguntas." Confúcio

  • quarta-feira, 18 de abril de 2012 18:33
     
     

    É só isto mesmo.

    Outra coisa importante é que vc precisa definir uma pasta chamada TempImageFiles no C: para a geração dos arquivos temporarios.

  • quarta-feira, 18 de abril de 2012 23:48
     
     

    É só isto mesmo.

    Outra coisa importante é que vc precisa definir uma pasta chamada TempImageFiles no C: para a geração dos arquivos temporarios.

    Cleber;

    Eu tenho essa pasta criada no meu servidor!


    Deise Vicentin
    "Eu não procuro saber as respostas, procuro compreender as perguntas." Confúcio

  • quinta-feira, 19 de abril de 2012 11:16
     
     
    Eu utilizo em todos os meus sistemas, assim que é gerado o grafico quando saí da pagina ele mesmo apaga as imagens.
  • quinta-feira, 19 de abril de 2012 20:56
     
     Respondido Contém Código

    Pessoal;

    Consegui resolver o problema. Antes quando eu criava o gráfico eu tinha o seguinte código:

    Chart mainChart = new Chart();
    mainChart.ImageStorageMode = ImageStorageMode.UseImageLocation;

    Depois que eu exclui essa segunda linha funcionou da forma que eu queria, não deixa mais os arquivos temporários nas pastas.

    Fica a dica!!


    Deise Vicentin
    "Eu não procuro saber as respostas, procuro compreender as perguntas." Confúcio

    • Marcado como Resposta Deise Vicentin quinta-feira, 19 de abril de 2012 20:57
    • Marcado como Resposta Deise Vicentin quinta-feira, 19 de abril de 2012 20:57
    •