Problema con System.Diagnostics.Process

martedì 12 gennaio 2010 - 16.35

alleusai Profilo | Newbie

Salve a tutti.
Ho un problema nella sviluppo della mia applicazione web con VS2005.
Ho scritto una sub che, nei miei intendimenti, deve aprire un file .pdf.
Ecco il codice:
Protected Sub Visualizza_PDF(ByVal NomeFile As String)
Dim myProcess As System.Diagnostics.Process = New System.Diagnostics.Process()
myProcess.StartInfo.FileName = NomeFile
myProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
myProcess.Start()
End Sub

Questo codice eseguito sulla macchina di sviluppo funziona benissimo ma, se eseguito sul server (Windows 2003 Server Standard SP2, .NET Framework 2.0, IIS 6.0) vedo nella lista dei processi il processo AcroRd32.exe eseguito da NETWORK SERVICE ma nulla a video.

Ho cercato a lungo una soluzione ma non sono riuscito a trovarla.
C'è qualcuno che può aiutarmi?

Grazie in anticipo,
Alessandro

tonyexpo Profilo | Senior Member

>Salve a tutti.
>Ho un problema nella sviluppo della mia applicazione web con
>VS2005.
>Ho scritto una sub che, nei miei intendimenti, deve aprire un
>file .pdf.
>Ecco il codice:
>Protected Sub Visualizza_PDF(ByVal NomeFile As String)
>Dim myProcess As System.Diagnostics.Process = New System.Diagnostics.Process()
> myProcess.StartInfo.FileName = NomeFile
>myProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
> myProcess.Start()
>End Sub
>
>Questo codice eseguito sulla macchina di sviluppo funziona benissimo
>ma, se eseguito sul server (Windows 2003 Server Standard SP2,
>.NET Framework 2.0, IIS 6.0) vedo nella lista dei processi il
>processo AcroRd32.exe eseguito da NETWORK SERVICE ma nulla a
>video.
>
>Ho cercato a lungo una soluzione ma non sono riuscito a trovarla.
>C'è qualcuno che può aiutarmi?
>
>Grazie in anticipo,
>Alessandro

Ciao
credo che il tuo problema sia il fatto che sul server l'application pool (l'istanza che esegue il tuo web all'interno di IIS) sia configurato come di default (per massimizzare la sicurezza) con l'utente NETWORK USER. Questo utente appunto non ha diritti di esecuzione all'interno dei dischi di sistema.

Hai quindi 2 possibilità:
o cambi l'utente dell'application pool (vai in iis, sugli application pool cerchi il tuo, e poi cambi l'utente) o cambi i diritti di esecuzione all'eseguibule dell'acrobat reader, per farlo eseguire anche dall'utente NETWORK USER facendo click destro sul file -> security -> add -> utente network user.

Spero di essere stato chiaro, altrimenti chiedi pure
Ciao


Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos

alleusai Profilo | Newbie

>>Salve a tutti.
>>Ho un problema nella sviluppo della mia applicazione web con
>>VS2005.
>>Ho scritto una sub che, nei miei intendimenti, deve aprire un
>>file .pdf.
>>Ecco il codice:
>>Protected Sub Visualizza_PDF(ByVal NomeFile As String)
>>Dim myProcess As System.Diagnostics.Process = New System.Diagnostics.Process()
>> myProcess.StartInfo.FileName = NomeFile
>>myProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
>> myProcess.Start()
>>End Sub
>>
>>Questo codice eseguito sulla macchina di sviluppo funziona benissimo
>>ma, se eseguito sul server (Windows 2003 Server Standard SP2,
>>.NET Framework 2.0, IIS 6.0) vedo nella lista dei processi il
>>processo AcroRd32.exe eseguito da NETWORK SERVICE ma nulla a
>>video.
>>
>>Ho cercato a lungo una soluzione ma non sono riuscito a trovarla.
>>C'è qualcuno che può aiutarmi?
>>
>>Grazie in anticipo,
>>Alessandro
>
>Ciao
>credo che il tuo problema sia il fatto che sul server l'application
>pool (l'istanza che esegue il tuo web all'interno di IIS) sia
>configurato come di default (per massimizzare la sicurezza) con
>l'utente NETWORK USER. Questo utente appunto non ha diritti di
>esecuzione all'interno dei dischi di sistema.
>
>Hai quindi 2 possibilità:
>o cambi l'utente dell'application pool (vai in iis, sugli application
>pool cerchi il tuo, e poi cambi l'utente) o cambi i diritti di
>esecuzione all'eseguibule dell'acrobat reader, per farlo eseguire
>anche dall'utente NETWORK USER facendo click destro sul file
>-> security -> add -> utente network user.
>
>Spero di essere stato chiaro, altrimenti chiedi pure
>Ciao
>
>
>Antonio Esposito
>MCTS, MCP
>
>http://blogs.dotnethell.it/espositos

Ciao, grazie per la risposta.
Ho controllato i permessi dell'AcroRd32.exe e sono settati su Full Control per tutti gli utenti, incluso il gruppo Users.
Ho provato a cambiare l'identità impostata sull'application pool associato al web site: ho messo Local Service, che ha il controllo completo delle risorse del sistema, ma non è cambiato nulla. Vedo il processo AcroRd32.exe nella lista processi ma a video non appare il documento pdf.
Qualche altro consiglio?

Grazie,
Alessandro

tonyexpo Profilo | Senior Member

scusami... ero altrove con la testa quando ti ho risposto ;)

ma tu vuoi visualizzare un pdf da un client di una pagina web lanciando un processo sul server??????

bè se è così nn riuscirai perchè il processo lo avvii lato server.....
la cosa più semplice per far visualizzare il file sul pc del chiamante è salvare il file in una cartella del web apposita (chiamiamola pdftemp) e fare il Response.Redirect(MapPath(<pathdelfile in pdftemp>))

così l'utente del web potrà navigare al pdf ed eventualmente da li fare quello che vuole tanto sul suo pc lo aprirà con il suo acrobat reader



ricordati ogni tanto di cancellare i file temp inutilizzati.......


se hai ancora problemi scrivi pure

ciao


Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5