Recentemente ho realizzato un progetto online di raggruppamento di articoli. Le principali funzioni includono la composizione delle parole, l'anteprima e la produzione di esami di test. Quando si tratta di operazioni di word all'inizio, una cosa che mi viene in mente è la componente COM dell'ufficio per operare word. Ci sono volute circa due settimane per scrivere il codice dell'intero sistema. Poi ho iniziato a fare test ripetutamente, mi sentivo bene localmente, sono riuscito a generare un elaborato di test Word in modo fluido, e le prestazioni erano discrete. Quindi non vedevo l'ora di rilascerlo sul server.
Il primo è che un componente con CLSID {000209FF-0000-0000-C000-000000046} nella fabbrica COM si guasta a causa del seguente errore: 8000401a Il sistema non può avviare il processo server perché l'ID di configurazione è errato. Per favore, controlla il nome utente e la password. (Eccezione da HRESULT:0x8000401A).
Prima di tutto, tutti questi problemi sono causati dai permessi, e la soluzione è semplicemente configurarli. Non solo utile per Excel e Word, ma anche per tutti i prodotti Office.
Per arrivare al punto, prima inserisci dcomcnfg nell'esecuzione, apri il component service manager->component service->my computer->DCOM-> trova l'applicazione Microsoft Excel/documento Microsoft Word 97-2003 corrispondente, e poi clicca con il tasto destro sull'attributo per attivare il permesso di avvio è sufficiente per assegnarlo a OK. -------- nessun problema, questo problema è risolto.
Parliamo della seconda situazione: "Problema di prestazioni": poiché il nostro sistema è il sottosistema successivo del nostro sito web. Quindi c'è una certa base di utenti. Il sistema fu accessibile da un gran numero di utenti non appena entrò in funzione. All'inizio, quattro o cinquecento giornali venivano raggruppati al giorno, e lentamente il volume degli articoli diventava sempre più grande, segnando l'inizio dei problemi con il sistema. Il primo è che ci sono molti winWord.exe processi nel processo. Non può finire. Sebbene il codice di sistema contenga il processo Quit e ricicli le risorse, il problema non viene mai risolto. La conseguenza di un gran numero di processi winword.exe è che il server rallenta. Dovrebbe essere particolarmente intensivo in memoria per questo componente.
Non c'è modo di risolvere il problema. L'ultimo rogue era scrivere un servizio di temporizzazione che uccideva il processo winword che non era in esecuzione. Questo tratta i sintomi ma non la causa principale. 、
Qui voglio dire che Microsoft Office è un software desktop per applicazioni desktop sviluppato principalmente per utenti comuni, ha elementi UI (interfaccia utente) ricchi ed è un insieme di software o software client puramente locali. L'interfaccia di automazione Word è principalmente progettata per facilitare le chiamate alle applicazioni a finestre. Ad esempio, applicazioni native sviluppate da Delphi, VB, C# Winform, ecc. Anche se è possibile forzare Visible a falso e Word può girare in codice lato server, ciò porta comunque molti problemi complicati.
1. ASP.NET si basa sull'architettura B/S. Nell'architettura B/S, l'accesso degli utenti è concorrente, il che significa che N utenti spesso effettuano richieste a una pagina server contemporaneamente. In questo caso, la chiamata di automazione Word spesso si interrompe di tanto in tanto.
2. A causa dell'operazione dell'interfaccia nascosta, alcune interfacce che coinvolgono interfacce che possono essere chiamate con successo nel programma finestra non richiamano sul lato server, o addirittura crashano, il che spesso porta a processi morti.
3. Poiché Word è un programma desktop complesso e non soddisfa gli standard dei programmi web di servizio web generali in termini di semplicità ed efficienza, è lento da eseguire lato server e consumerà molte risorse (CPU, memoria), soprattutto se non può supportare un gran numero di utenti da accedere contemporaneamente, e le risorse si esauriranno rapidamente.
4. La maggior parte degli sviluppatori è relativamente poco familiare con la tecnologia COM, e spesso si verificano alcuni errori di codice durante la programmazione e la chiamata dell'interfaccia Word, ed è difficile verificare il problema, che è un fattore frequente che causa processi morti. I processi Word dead non solo consumano risorse server, ma spesso fanno sì che le pagine server non riescano a creare nuovi oggetti di automazione Word e a continuare a funzionare. Alcuni internaute hanno proposto una soluzione a processo morto: programmare per eliminare il processo morto di Word, che è una pratica di trattamento dei sintomi ma non della causa principale; il processo morto di Word è sparito, ma la chiusura anomala di Word farà sì che molte risorse non possano essere rilasciate in tempo. È difficile dire quanto durerà un server web del genere.
Per risolvere questi problemi, dopo una ricerca approfondita e un confronto, l'autore ha scoperto che esiste un componente componente aspose.words su Internet, che elimina completamente i problemi sopra e consiglia di condividerlo con te.
Di seguito condividerò con voi parte del codice operativo del componente aspose.words nella speranza che possa essere utile a chi ne ha bisogno
Link originale: http://blog.csdn.net/fraing/article/details/8989736
|