Recent, am realizat un proiect online de grupare a lucrărilor. Principalele funcții includ tiparirea cuvintelor, previzualizarea și generarea lucrărilor de test. Când vine vorba de operațiunile Word la început, un lucru care îmi vine în minte este componenta COM de la birou pentru operarea word-ului. A durat cam două săptămâni să scriu codul pentru întregul sistem. Apoi am început să testez în mod repetat, m-am simțit bine local, am reușit să generez o lucrare de test de text fără probleme, iar performanța a fost ok. Așa că abia așteptam să-l lansez pe server.
Primul este că un component cu CLSID {000209FF-0000-0000-C000-000000046} din fabrica COM eșuează din cauza următoarei erori: 8000401a Sistemul nu poate porni procesul serverului deoarece ID-ul de configurare este incorect. Vă rugăm să verificați numele de utilizator și parola. (Excepție de la HRESULT:0x8000401A).
În primul rând, toate aceste probleme sunt cauzate de permisiuni, iar soluția este pur și simplu să configurezi permisiunile. Nu doar util pentru Excel și Word, ci și pentru toate produsele Office.
Ca să ajungem la subiect, mai întâi introdu dcomcnfg în run, deschide componenta service manager->component service->my computer->DCOM-> găsește aplicația Microsoft Excel corespunzătoare/documentul Microsoft Word 97-2003 și apoi dă click dreapta pe atribut pentru a activa permisiunea de boot este suficientă pentru a o da OK. -------- nicio problemă, această problemă este rezolvată.
Să vorbim despre a doua situație "Problema de performanță": deoarece sistemul nostru este următorul subsistem al site-ului nostru. Așadar, există o anumită bază de utilizatori. Sistemul a fost accesat de un număr mare de utilizatori imediat ce a fost lansat. La început, patru sau cinci sute de ziare erau grupate pe zi, iar treptat volumul de lucrări a devenit tot mai mare, ceea ce a marcat începutul problemelor cu sistemul. Primul este că există multe procese winWord.exe în proces. Nu se poate termina. Deși codul sistemului conține procesul Quit și reciclează resursele, problema nu este niciodată rezolvată. Consecința unui număr mare de procese winword.exe este că serverul încetinește. Ar trebui să fie deosebit de intensiv din memorie pentru această componentă.
Nu există nicio cale de a rezolva problema. Ultimul renegat a fost să scrie un serviciu de sincronizare care a oprit procesul winword care nu rula. Aceasta tratează simptomele, dar nu și cauza principală. 、
Aici vreau să spun că Microsoft Office este un software de birou desktop dezvoltat în principal pentru utilizatorii obișnuiți, are elemente bogate de interfață (interfață cu utilizatorul) și este un set pur de software local sau software client. Interfața de automatizare Word este concepută în principal pentru a facilita apelurile aplicațiilor ferestre. De exemplu, aplicații native dezvoltate de Delphi, VB, C#, Winform etc. Deși este posibil să forțezi Visible să fie fals și Word poate rula în cod de pe server, tot apar multe probleme complicate.
1. ASP.NET se bazează pe arhitectura B/S. În arhitectura B/S, accesul utilizatorilor este concomitent, ceea ce înseamnă că N utilizatori fac adesea cereri către o pagină de server în același timp. În acest caz, apelul de automatizare Word se va opri adesea din când în când.
2. Din cauza operării interfeței ascunse, unele interfețe care implică interfețe ce pot fi apelate cu succes în programul fereastra nu vor fi apelate pe partea serverului sau chiar vor cădea, ceea ce duce adesea la procese moarte.
3. Deoarece Word este un program desktop complex și nu îndeplinește standardele programelor generale de servicii web în ceea ce privește simplitatea și eficiența, rulează lent pe partea de server și va consuma multe resurse (CPU, memorie), mai ales că nu poate susține accesul unui număr mare de utilizatori simultan, iar resursele se vor epuiza rapid.
4. Majoritatea dezvoltatorilor sunt relativ puțin familiarizați cu tehnologia COM, iar adesea apar unele erori de cod la programarea și apelarea interfeței Word, fiind dificil să verifici problema, ceea ce este un factor frecvent ce duce la procesele moarte. Procesele Word dead nu doar consumă resurse de server, ci adesea fac ca paginile serverului să nu creeze noi obiecte de automatizare Word și să continue să funcționeze. Unii internauți au propus o soluție pentru procesul mort: programarea pentru a ucide procesul mort al Word, care este o practică de tratare a simptomelor, dar nu a cauzei principale, procesul mort al Word a dispărut, dar închiderea anormală a Word va face ca multe resurse să nu poată fi eliberate la timp. Cât va rezista un astfel de server web este greu de spus.
Pentru a rezolva aceste probleme, după cercetări și comparații amănunțite, autorul a descoperit că există o componentă componentă aspose.words pe Internet, care elimină complet problemele de mai sus și este recomandat să fie împărtășită cu tine.
Mai jos voi împărtăși o parte din codul operațional al componentei aspose.words, în speranța că va fi de ajutor celor care au nevoie
Link original: http://blog.csdn.net/fraing/article/details/8989736
|