Server Di Processo Waitforexit


Sto usando VS2005 C e test sul mio XP pro PC locale con IIS locale, ho scritto un servizio web per chiamare un software di terze parti. exe file da utilizzare file CSV per inserire i dati nel proprio database OLE DB, che utilizzano System. Diagnostics. Process. Start. Gli stessi codici hanno funzionato quando uso VS2005 build-in ASP Development Server (localhost: 2999MyServicesMyServices. asmx). ma quando uso di IIS URL normale (developerMyServicesMyServices. asmx) per eseguire Process. Start sul servizio web, semplicemente haunlted e non fare nulla. Così ho messo il uccidere statment di uccidere il processo dopo 1 minuti, tuttavia, il processo fermato, ma non ho fatto niente. I codici sono i seguenti, devo dare il permesso completo IIS includere la scrittura e l'esecuzione XmlDocument XMLConfig new XmlDocument () stringa di percorso utensile XMLConfig TDCService Attributo. GetAttribute (ShopKeepPath) Processo myProcess processo. Start (percorso utensile, IMPORT-CONTO FILENAME - C: CustomerCSVfile. csv) se (myProcess. HasExited) myProcess. Kill () Lunedi, 01 ° gennaio, 2007 15:00 Quando si esegue ASP tramite Visual Studio il codice viene eseguito con le credenziali. Se si esegue in IIS verrà eseguito con l'account ASPNET. Questo conto ha accesso al database OLEDB Fa questo account hanno accesso al file CSV Lo strumento può essere ti dà un errore nel StandardError o StandardOut. Provate a leggere ed eseguire il debug di questi valori: Tuesday, January 02, 2007 15:04 Tutte le risposte Ci sono due cose che si dovrebbero prendere in considerazione: Quale versione di IIS stai utilizzando è la corsa consentita quadro sul vostro web server (È necessario controllare la estensioni web IIS qui se theyre disabilitato consentire loro Non dimenticate ogni versione del server web devono essere abilitati -.., o almeno la versione vostra applicazione è scritto in deve essere abilitato) Martedì 2 Gennaio 2007 07:08 Quando si è esecuzione ASP tramite Visual Studio il codice viene eseguito con le credenziali. Se si esegue in IIS verrà eseguito con l'account ASPNET. Questo conto ha accesso al database OLEDB Fa questo account hanno accesso al file CSV Lo strumento può essere ti dà un errore nel StandardError o StandardOut. Provate a leggere e correggere questi valori: Tuesday, January 02, 2007 15:04 Grazie mille. Ho trovato il problema è dovuto a ASPNET non dispone dell'autorizzazione per accedere al database OLE DB. Dopo ho impostato la condivisione per la cartella del database OLE DB, il problema è stato risolto. Mi chiedo solo se la scheda di sicurezza nelle proprietà della cartella vengono visualizzati solo quando il PC è in un dominio Perché il mio PC non è nel dominio, in modo da non avere la scheda di sicurezza e scheda il permesso sotto Condivisione, ho ragione Giovedi, ° gennaio 04 2007 02:24 sono bloccato in una situazione simile, ma la mia situazione sembra un po 'diverso: io sto usando in esecuzione il processo più interno come utente del dominio (vedi codice stato tagliato in basso). Il processo Perl. exe si presenta sul server che esegue come utente correctintended, ma il processo alloca semplicemente una frazione della memoria normalmente associati con questo processo e poi si blocca lì fino a quando non viene finalmente ucciso non scrive un file di log né io ottenere qualsiasi suggerimenti utili tramite standardOut né standardError. psi. FileName ConfigurationManager. AppSettings quotPerlBinExequot psi. EnvironmentVariables quotPathquot quotc: programma filesimagemagick-6.2.9-q16quot psi. UserName ConfigurationManager. AppSettings quotUserNamequot psi. Domain ConfigurationManager. AppSettings quotUserDomainquot psi. WorkingDirectory ConfigurationManager. AppSettings quotWorkingDirectoryquot stringa pippo ConfigurationManager. AppSettings quotUserPassquot psi. nuova password System. Security. SecureString () for (int I0 iltfoo. Length i) risultano nuova SingleImageResult (vero, quotCommand Linea: quot psi. FileName quot quot psi. Arguments quotnnquot quotStandard uscita: quot p. StandardOutput. ReadToEnd () quotnnquot quotStandard Errore: p. StandardError quot. ReadToEnd () quotnnquot quotNote: processo doveva essere KILLED. quot) comportare nuova SingleImageResult (vero, quotCommand linea: quot psi. FileName quot quot psi. Arguments quotnnquot quotStandard uscita: quot p. StandardOutput. ReadToEnd () quotnnquot Errore quotStandard: quot p. StandardError. ReadToEnd ()) ho avuto un po 'di codice che sembrava come il vostro dove stavo cercando di eseguire un processo come un altro utente ed anche ha aggiunto una nuova variabile di ambiente. Ho notato che quando ho aggiunto una nuova variabile d'ambiente alla raccolta EnvironmentVariables la proprietà LoadUserProfile sembrava essere ignorato. Il exe processo funzionerebbe come l'utente previsto nel taskmanager ma sarebbe caricare il profilo dell'utente corrente e non l'altro utente come volevo. Quando ho didnt aggiungere la variabile d'ambiente il profilo del utente corretto è stato caricato come previsto. Non so se questo è un bug o comportamento previsto. Ho finito per non usare la variabile ENV e appena passato le informazioni come parametro nella proprietà Argomenti. Lunedi, 18 febbraio, 2008 23:49 Sono di fronte a un simile tipo di problema 1. sto avendo un'applicazione Windows che ottiene il nome utente e la password da parte dell'utente ed è anche un pulsante. 2. Dopo aver inserito il nome utente e la password, l'utente deve fare clic su tale pulsante. 3. utente clicca ciò che l'applicazione dovrebbe fare è che deve aprire la pagina web richiesta dire per esempio (gmail) e dovrebbe accedere a quella pagina web utilizzando il nome utente e la password. 4. Per questo ho usato il codice follwing nell'evento click del pulsante. 5. Il problema è username e password è dato dall'utente ma ciò dovrebbe essere il contenuto nel campo dominio. 6. Si sta dando Win32Exception affermando quotParameter è Incorrectquot Lunedi, 24 marzo, 2008 11.21 sono il dominio in questo caso è il dominio del server è in esecuzione. IE COMPANYNAME probabilmente. L'utente che il processo è in esecuzione deve essere parte di quel dominio e deve disporre dei diritti per eseguire l'applicazione sul server. Ho una domanda se per chiunque altro. Posso ottenere questo per funzionare abbastanza dritto in avanti. Tuttavia quando provo a leggere in realtà le informazioni che viene inviato indietro Sto avendo un problema che l'handle non è valido. Ecco una snippett del mio codice. Tutte le idee sarebbe apprezzato. stringa System. Diagnostics astr quotscquot. ProcessStartInfo psi nuove System. Diagnostics. ProcessStartInfo (Astr) psi. Arguments (quotquot strServer quot interrogazione quotquot txtService. Text quotquotquot) System. Diagnostics. Processo proc nuove System. Diagnostics. Process () System. Diagnostics proc. Processo. Start (psi) - qui è dove si blocca System. IO. StreamReader sr1 proc. StandardOutputProcess. Metodo WaitForExit (Int32) WaitForExit (Int32) rende la corrente di attesa filo fino a quando il processo associato termina. Dovrebbe essere chiamato dopo che tutti gli altri metodi sono chiamati sul processo. Per evitare di bloccare il thread corrente, utilizzare l'evento terminato. Questo metodo indica il componente Process aspettare una quantità limitata di tempo per il processo di uscire. Se il processo associato non esce dalla fine dell'intervallo perché la richiesta di interrompere negato, falso viene restituito alla procedura chiamante. È possibile specificare un numero negativo (infinito) per millisecondi. e di processo. WaitForExit (Int32) si comporterà lo stesso del sovraccarico WaitForExit (). Se si passa 0 (zero) per il metodo, restituisce vero solo se il processo è già uscito in caso contrario, restituisce immediatamente falso. Nelle versioni Framework 3.5 e precedenti, se millisecondi era -1, il WaitForExit (Int32) sovraccarico aspettava millisecondi MaxValue (circa 24 giorni), non a tempo indeterminato. Quando l'uscita standard è stato reindirizzato a gestori di eventi asincroni, è possibile che l'elaborazione di uscita non avrà completato quando questo metodo restituisce. Per garantire che la movimentazione evento asincrono è stato completato, chiamare sovraccarico WaitForExit () che accetta nessun parametro che riceve un vero dal questo sovraccarico. Per garantire che l'evento Exited viene gestito correttamente in applicazioni Windows Form, impostare la proprietà SynchronizingObject. Quando un processo esce associati (viene arrestato dal sistema operativo attraverso una terminazione normale o anormale), il sistema memorizza dati di carattere amministrativo sul processo e restituisce al componente che aveva chiamato WaitForExit (Int32). Il componente processo può quindi accedere alle informazioni, che comprende il ExitTime. utilizzando la maniglia per il processo è terminato. Poiché il processo associato è uscito, la proprietà Handle del componente non fa riferimento a una risorsa processo esistente. Invece, la maniglia può essere utilizzato solo per accedere alle informazioni sistemi operativi sulla risorsa processo. Il sistema è a conoscenza di maniglie ai processi usciti che non sono stati rilasciati da componenti di processo, in modo che mantiene il ExitTime e gestire le informazioni in memoria fino a quando il componente Process libera specificamente le risorse. Per questo motivo, ogni volta che si chiama di avvio per un'istanza di processo, invito a chiudere quando il processo associato è terminato e non è più necessario tutte le informazioni amministrative su di esso. Chiudere libera la memoria allocata per il processo è terminato.

Comments

Popular posts from this blog

Vekselkurser Forex Pace

Sedgefield Volte Mercato Forex

Xforex Trading De Dispositivi E Stampanti