Nylig gjorde jeg et nettbasert oppgavegruppeprosjekt. Hovedfunksjonene omfatter tekstsetting, forhåndsvisning og produksjon av prøveoppgaver. Når det gjelder ordoperasjoner i starten, er én ting jeg tenker på kontorets COM-komponent for å operere ord. Det tok omtrent to uker å skrive koden for hele systemet. Så begynte jeg å teste gjentatte ganger, og jeg følte meg bra lokalt, og jeg klarte å lage en ord-testoppgave jevnt, og ytelsen var grei. Så jeg kunne ikke vente med å slippe det til serveren.
Den første er at en komponent med CLSID {000209FF-0000-0000-C000-0000000046} i COM-fabrikken feiler på grunn av følgende feil: 8000401a Systemet kan ikke starte serverprosessen fordi konfigurasjons-ID-en er feil. Vennligst sjekk brukernavn og passord. (Unntak fra HRESULT:0x8000401A).
Først og fremst skyldes alle disse problemene tillatelser, og løsningen er bare å konfigurere tillatelser. Ikke bare nyttig for Excel og Word, men også for alle Office-produkter.
For å komme til poenget, skriv først inn dcomcnfg i kjøringen, åpne component service manager->component service->my computer->DCOM-> finn det tilsvarende Microsoft Excel-applikasjonen/Microsoft Word 97-2003-dokumentet, og høyreklikk på attributtet for å aktivere oppstartstillatelsen er nok til å gi det OK. -------- ikke noe problem, dette problemet er løst.
La oss snakke om den andre situasjonen, "Ytelsesproblemet": Siden systemet vårt er neste delsystem på nettsiden vår. Så det finnes en viss brukerbase. Systemet ble aksessert av et stort antall brukere så snart det ble satt i drift. I begynnelsen ble fire eller fem hundre artikler samlet om dagen, og gradvis ble volumet av artikler større og større, noe som var starten på problemene med systemet. Den første er at det er mange winWord.exe prosesser i prosessen. Det kan ikke ta slutt. Selv om systemkoden inneholder Quit-prosessen og resirkulerer ressurser, blir problemet aldri løst. Konsekvensen av et stort antall winword.exe prosesser er at serveren blir tregere. Den bør være spesielt minnekrevende for denne komponenten.
Det finnes ingen måte å løse problemet på. Den siste rogue var å skrive en tidstjeneste som drepte winword-prosessen som ikke kjørte. Dette behandler symptomene, men ikke selve årsaken. 、
Her vil jeg si at Microsoft Office er en skrivebordsapplikasjonsprogramvare hovedsakelig utviklet for vanlige brukere, den har rike UI-elementer (brukergrensesnitt), og er et sett med ren lokal kjøreprogramvare eller klientprogramvare. Word-automatiseringsgrensesnittet er primært designet for å lette vindusapplikasjonskall. For eksempel native applikasjoner utviklet av Delphi, VB, C# Winform, osv. Selv om det er mulig å tvinge Visible til å være falskt og Word kan kjøre i serversidekode, medfører det fortsatt mange vanskelige problemer.
1. ASP.NET er basert på B/S-arkitektur. I B/S-arkitekturen er brukertilgang samtidig, noe som betyr at N brukere ofte forespør en serverside samtidig. I dette tilfellet vil Word-automatiseringskallet ofte dø fra tid til annen.
2. På grunn av den skjulte grensesnittoperasjonen vil noen grensesnitt som involverer grensesnitt som kan kalles vellykket i vindusprogrammet feile i å kalle på serversiden, eller til og med krasje, noe som ofte fører til døde prosesser.
3. Fordi Word er et komplekst skrivebordsprogram og ikke oppfyller standardene til generelle webtjenesteprogrammer for enkelhet og effektivitet, er det tregt å kjøre på serversiden, og det vil bruke mye ressurser (CPU, minne), spesielt fordi det ikke kan støtte et stort antall brukere samtidig, og ressursene vil raskt bli brukt opp.
4. De fleste utviklere er relativt ukjente med COM-teknologi, og det oppstår ofte noen kodefeil ved programmering og kalling av Word-grensesnittet, og det er vanskelig å sjekke problemet, som ofte fører til døde prosesser. Word-dead prosesser bruker ikke bare serverressurser, men fører ofte til at serversider ikke klarer å lage nye Word-automatiseringsobjekter og fortsetter å fungere. Noen nettbrukere foreslo en død prosessløsning: programmering for å drepe den døde prosessen til Word, som er en praksis for å behandle symptomene men ikke selve årsaken, den døde prosessen til Word er borte, men den unormale lukkingen av Word vil føre til at mange ressurser ikke kan frigjøres i tide. Hvor lenge en slik webserver vil vare er vanskelig å si.
For å løse disse problemene, etter grundig forskning og sammenligning, fant forfatteren at det finnes en komponentkomponent aspose.words på Internett, som fullstendig eliminerer de ovennevnte problemene og anbefales å dele med deg.
Nedenfor vil jeg dele noe av operasjonskoden til aspose.words-komponenten med deg i håp om at det vil være til hjelp for dem som trenger det
Original lenke: http://blog.csdn.net/fraing/article/details/8989736
|