Errore Visua Studio 2008

martedì 24 novembre 2009 - 12.39

putos1979 Profilo | Newbie

Buonasera vorrei sottoporvi un problema.
Ho creato un applicativo e per stampare i report ho usato crystal report.
sta di fatto comunque che l'applicativo lanciato in debug in VS2008, funziona benissimo, ma quando lo pubblico non va, in quanto non mi pubblica i file rpt, mentre tutto il resto funzioa correttamente,.
Il progetto è in asp.net.
Di seguito troverete l'errore che mi genera

Impossibile trovare il file specificato.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.Runtime.InteropServices.COMException: Impossibile trovare il file specificato.

Errore nel codice sorgente:

Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.

Analisi dello stack:

[COMException (0x80004005): Impossibile trovare il file specificato.
]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +95
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +271

[CrystalReportsException: Caricamento report non riuscito.]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +334
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +894
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +84
SoftTel.ReportFatture.ReportFatture.ShowReportFattura() in C:\Documents and Settings\Gianluca\My Documents\Visual Studio 2008\Projects\Telefonia\SoftTel\ReportFatture\ReportFatture.aspx.cs:34
SoftTel.ReportFatture.ReportFatture.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\Gianluca\My Documents\Visual Studio 2008\Projects\Telefonia\SoftTel\ReportFatture\ReportFatture.aspx.cs:22
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

freeteo Profilo | Guru

Ciao,
se non ho capito male l'errore è dovuto al fatto che il report, quindi il file ".rpt" non viene pubblicato da visual studio, e quindi quell'exception "file non trovato" è riferito al file del report vero e proprio.

Dentro a visual studio, a progetto aperto, vai sul file rpt che hai nella Solution Explorer e nella finestra "Proprietà" di questo, imposta "Build Action=None" e "Copy to Destination=Copy Always", in modo che quanto fai il deploy, venga copiato anche quello, come singolo file e non "compilato" o "embedded" nell'assembly...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

putos1979 Profilo | Newbie

Ciao,
quello che mi hai suggerito è una cosa che ho già fatto ma stranamente il file anzichè copiarmelo nella directory giusta ossia...
Report/Fatture/StampaFattura.rpt
me lo copia nella directory
bin/Report/Fatture/StampaFattura.rpt

Ho sbagliato qualche passaggio durante la creazione?

grazie per il tuo interessamento

freeteo Profilo | Guru

Ciao,
si il comportamente è corretto perchè a livello di "compilazione" l'assembly finisce nella Bin e quindi il path per i report partono da li.
Tu invece vuoi che la struttura della compilazione rispecchi quella del tuo progetto (cosa che accade il 99% delle volte) e questo dovrebbe avvenire quando fai il "publish" del tuo progetto web, a te non succede?
Tu che operazioni fai per distribuire il tuo progetto?

Io tipicamente faccio il publish su una mia directory e poi copio a mano i file che mi interessano (tipicamente tutti tranne il web.config) in modo da avere maggior controllo sull'operazione...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

putos1979 Profilo | Newbie

io praticamente pubblico direttamente sul server.
il file rpt lo sposto direttamente nella directory che mi interessa e poi ho scoperto che l'errore di crystal report è dovuto non ad un errore di visual studio, ma ad una errata configurazione di iis.
in pratica mi mancava nella directory di pubblicazione la parte
aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer4

una volta copiata tale directory nel mio progetto ho visto che tutto funziona come dovrebbe.

grazie molte per il tuo aiuto...
spero che questo mio problema sia d'aiuto ad altri.

Ciao.....

freeteo Profilo | Guru

>grazie molte per il tuo aiuto...
>spero che questo mio problema sia d'aiuto ad altri.
ok grazie a te che hai postato la soluzione così se qualcuno capiterà qui perchè si trova in un problema simile, potrà usare il tuo suggerimento.



Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5