ReportViewer: molto lento la prima volta

martedì 01 aprile 2014 - 10.25
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010

Ulisse2001 Profilo | Newbie

Ciao a tutti,
è da diverso tempo che cerco una soluzione senza avere risultati apprezzabili. Ho letto in diversi articoli che il framework 4.0 ha qualche problema di performance con questo tipo di controllo (io utilizzo la versione 11) e che la prima volta la perdita di tempo è dovuta alla lettura delle dll.
Utilizzo il reportviewer in ProcessingMode.Local e i report difficilmente superano le 2 pagine. Provato sulla macchina locale il report viene sempre visualizzato in pochi secondi, spostato sul server (win 2008R2 e IIS7) la prima volta ci mette minimo 30 secondi mentre le volte successive ritorna veloce (a meno che l'applicazione non venga riavviata tramite il recycle dello stesso IIS).

Ho trovato diversi suggerimenti tra i quali aggiungere nel web.config impostazioni le impostazioni seguenti:

<generatePublisherEvidence enabled="false"/>
<NetFx40_LegacySecurityPolicy enabled="true"/>
<trust legacyCasModel="true" level="Full"/>

ma non è cambiato nulla!

Ogni suggerimento è ben gradito,
grazie a tutti.

algraps Profilo | Junior Member

>Ciao a tutti,
>è da diverso tempo che cerco una soluzione senza avere risultati
>apprezzabili. Ho letto in diversi articoli che il framework 4.0
>ha qualche problema di performance con questo tipo di controllo
>(io utilizzo la versione 11) e che la prima volta la perdita
>di tempo è dovuta alla lettura delle dll.
>Utilizzo il reportviewer in ProcessingMode.Local e i report difficilmente
>superano le 2 pagine. Provato sulla macchina locale il report
>viene sempre visualizzato in pochi secondi, spostato sul server
>(win 2008R2 e IIS7) la prima volta ci mette minimo 30 secondi
>mentre le volte successive ritorna veloce (a meno che l'applicazione
>non venga riavviata tramite il recycle dello stesso IIS).
>
>Ho trovato diversi suggerimenti tra i quali aggiungere nel web.config
>impostazioni le impostazioni seguenti:
>
><generatePublisherEvidence enabled="false"/>
><NetFx40_LegacySecurityPolicy enabled="true"/>
><trust legacyCasModel="true" level="Full"/>
>
>ma non è cambiato nulla!
>
>Ogni suggerimento è ben gradito,
>grazie a tutti.

Ciao prova questo:
Vai su iis e seleziona l'application Pools. Clicca col tasto dx del mouse su qeullo per il Reporting service e sleziona le proprieta'. Un check"Shutdown worker processes after being idle for (time in minutes):"
Fammi sapere.
Ciao.
Al.
A.G.
http://nothingnessit.wordpress.com/

Ulisse2001 Profilo | Newbie

Ciao,
io nel mio IIS non ho nessun Reporting Services.
In effetti non mi appoggio a nessun SSRS, ma faccio generare i report direttamente dal client.

algraps Profilo | Junior Member

Ciao,
quindi utilizzi reporting in locale.. corretto? Non ti appoggi a un reporting service.
A.G.
http://nothingnessit.wordpress.com/

Ulisse2001 Profilo | Newbie

Esattamente.
La generazione del report è lento solo la prima volta dopo che lo si richiama, mentre le volte successive è veloce. Quindi capita che tutte le volte che l'applicazione subisce il recycle da parte di IIS. Se lo provo sulla mia macchina (quindi localhost) è sempre veloce. Tra le altre cose, io ho diversi reports richiamati in pagine differenti, e la cosa si ripercuote in maniera distinta in ognuna di esse, quindi a mio avviso non dipende neanche dal fatto che la prima volta l'applicazione deve ricaricare le dll relative alla reportistica, altrimenti dovrebbe essere lento solo il primo report e veloci gli altri a prescindere.

algraps Profilo | Junior Member

Ciao,
potrebbe essere dovuto alla connessione al DB per popolare i reports?

Ciao
Al.
A.G.
http://nothingnessit.wordpress.com/

Ulisse2001 Profilo | Newbie

Non credo, altrimenti dovrei averlo sempre e non solo la prima volta.
Da quanto letto, Il problema dovrebbe essere nella lettura delle dll che si verifica al primo lancio.
Quello che non mi spiego allora è perché in locale non avviene ed è sempre veloce, mentre una volta lanciato sul server web capita puntualmente. Se poi è vero il fatto che debba capitare solo al primo richiamo, allora perché mi capita anche sugli altri report?
Ovviamente queste sono solo mie supposizioni alle quali però non sono riuscito a trovare una soluzione.

algraps Profilo | Junior Member

Questo no e' detto. se non ricordo male, esiste una sorta di cache per velocizzare il caricamento. ma non vorrei sbagliarmi..
Se lo fa solo la prima volta e ogni volta che resetti iis, mi sembra molto legato ai dati.. cosa ne pensi?
Faccio un po' di scouting tra le mie cose per capire se esiste la cache...

Ciao
Al.
A.G.
http://nothingnessit.wordpress.com/

Ulisse2001 Profilo | Newbie

In effetti tutto può essere,
ad ogni modo ti ringrazio.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5