Toegang tot Office Word-objectmodel via asp.net resulteert in “mislukt vanwege de volgende fout: 80070005 Toegang is geweigerd.”

Ik heb een website ontwikkeld waarmee gebruikers Office-documenten kunnen uploaden en vervolgens het Office-objectmodel gebruiken om het document om te zetten in een HTML-bestand dat het vervolgens in een iFrame weergeeft.

Ik heb natuurlijk verwijzingen naar Office.interop.word toegevoegd en de site werkt prima op mijn ontwikkelmachine. Toen ik het naar mijn productieserver uploadde, werkte de site prima totdat ik probeer een document te uploaden. Ik kreeg aanvankelijk een soortgelijke fout die zei: “COM-object niet geregistreerd”. Ik realiseerde me dat Word niet op mijn productieserver was geïnstalleerd. Dus ik heb Word geïnstalleerd en nu wanneer de server toegang probeert te krijgen tot het Word-objectmodel, krijg ik de volgende foutmelding:

Het ophalen van de COM-klassefabriek voor component met CLSID {000209FF-0000-0000-C000-000000000046} is mislukt vanwege de volgende fout: 80070005 Toegang is geweigerd. (Uitzondering op HRESULT: 0x80070005 (E_ACCESSDENIED))

Ik heb in het register naar de bijbehorende CLSID gezocht en een bijbehorende map gevonden. Ik voegde volledige controle toe aan het IUSR_-account en vanwege de hardnekkigheid van de fout voegde ik uiteindelijk volledige controle toe aan “iedereen” en zorgde ervoor dat deze machtigingen werden overgenomen naar de rest van de map. Ik heb vervolgens volledige controle toegevoegd aan IUSR_ en uiteindelijk heb ik volledige controle aan “iedereen” toegevoegd aan mijn Microsoft Office-map.

Ik weet niet welke andere machtigingen ik moet verlenen en waar om deze “Toegang geweigerd”-foutmelding te laten verdwijnen.Ik moet ze op de verkeerde plaats verlenen, want voor zover Ik weet dat ik niet toegeeflijker kan zijn dan “Iedereen” “Volledige controle”.

Kan iemand enig licht werpen?


Antwoord 1, autoriteit 100%

Ok, ik heb dit probleem opgelost met deze stappen:

  1. Zet in de opdrachtregel DCOMCNFG
  2. Consolehoofdmap uitvouwen > Onderdelenservice > Computers, klik met de rechtermuisknop op Deze computer en selecteer Eigenschappen
  3. Op het tabblad COM-beveiliging > Start- en activeringsmachtigingen Klik in Standaard bewerken
  4. Voeg de gebruiker (bijv. IIS_IUSRS) of service toe
  5. Vink Lokale lancering en lokale activering toestaan ​​aan

Dan kunnen Excel, Word en andere toepassingen werken, succes.


Antwoord 2, autoriteit 81%

Dit werkte voor mij:

  1. Plaats in de opdrachtregel DCOMCNFG
  2. Componentendiensten -> Computers -> Mijn computer -> DCOM-configuratie
  3. Zoek “Microsoft Word 97 – 2003-document” (als het ontbreekt, controleer dan of uw Word ook 64-bits is (als uw Windows dat is) als het niet wordt uitgevoerd mmc comexp.msc /32
    in plaats van DCOMCNFGin stap 1 zoals voorgesteld door Darksealhier)
  4. Klik met de rechtermuisknop -> Eigenschappen
  5. Ga naar tabblad Beveiliging en bewerk de keuzerondjes “Aanpassen” zodat IIS_IUSRS rechten kan krijgen voor starten en toegang
  6. Ga naar het tabblad Identiteit en kies “De interactieve gebruiker”
  7. Wijzigingen toepassen en opnieuw proberen
  8. Als dit allemaal niet lukt, ga dan ook naar het tabblad “Algemeen” en kies in de vervolgkeuzelijst “Verificatieniveau” voor “Geen”.

Antwoord 3, autoriteit 19%

Kijk in de Event Viewer, onder Windows Logs, System, op de servercomputer waarop Word is geïnstalleerd. Zie je een gelogde gebeurtenis die iets lijkt op:

De machine-standaardmachtiging
instellingen verlenen geen lokale activering
toestemming voor de COM-server
applicatie met CLSID
{148BEE7F-6123-41EE-8CCA-E390902BD0D8}
naar de gebruiker SomeMachine\SomeUser SID
(S-1-5-21-483881670-2168941642-1987552629-1003) van adres LocalHost (met LRPC).
Deze beveiligingstoestemming kan zijn:
gewijzigd met behulp van de Component Services
administratieve tool.

Zo ja, voer DCOMCNFG.EXE uit en ga naar Component Services, Computers, Deze computer (of welke naam dan ook), DCOM Config (en u kunt gewoon “Nee” antwoorden als wordt gevraagd of u iets wilt repareren) en of het gebeurtenislogboekbericht is voor een toepassing, zoek het dan op bij de naam in het gebeurtenislogboekbericht, hier op itemnaam, en als het gebeurtenislogboekbericht voor een CLSID is (zoals het bovenstaande voorbeeld), dan zoek het door de CLSID “{148B…}” (dat is gewoon een willekeurige CLSID die ik heb geplakt — waarschijnlijk zal het overeenkomen met uw 000209FF… hierboven), en selecteer Meer acties… Eigenschappen op het tabblad Beveiliging.

Hier kunt u [x] Aanpassen selecteren en vervolgens Bewerken om toestemming toe te voegen voor het juiste gebruikersaccount om de vereiste DCOM-toepassing of -klasse te activeren en te openen.

Het is maar een gok, maar probeer dat eens, of iets dergelijks (d.w.z. toegang verlenen tot de CLSID via DCOMCNFG).


Antwoord 4, autoriteit 10%

Ik vond het moeilijk om dit uit te zoeken met behulp van het geaccepteerde antwoord, omdat het record Microsoft Word 97 – 2003-documentniet werd vermeld bij DCOM-configuratie-items. Ik vond de oplossing in deze Technet-blogpost, waarin ze het probleem correct hebben uitgelegd:

Het is belangrijk op te merken dat als u 32-bits Microsoft Office installeert op
een 64-bits machine, moet u mogelijk de 32-bits DCOM-configuratiemanager gebruiken
om de programma’s te bekijken, afhankelijk van uw besturingssysteem.

Op x64-besturingssystemen van Windows XP tot Windows Server 2008, de
64-bits versie van DCOMCNFG.EXE configureert 32-bits niet correct
DCOM-toepassingen voor activering op afstand. Dit gedrag veroorzaakt
componenten die bedoeld zijn om op afstand te worden geactiveerd in plaats van:
lokaal geactiveerd. Dit gedrag doet zich niet voor in Windows 7 en
Windows Server 2008 R2 en hogere versies.

Ref.:
http://msdn.microsoft .com/en-us/library/windows/desktop/ms678426(v=vs.85).aspx

En stelde ook voor om de volgende opdrachtregelopdracht te gebruiken (in plaats van DCOMCNFG) als een effectieve oplossing:

mmc comexp.msc /32

Hierdoor wordt de 32-bits DCOM-configuratiemanager geladen in plaats van de 64-bits configuratie en kunnen de stappen worden uitgevoerd die in het geaccepteerde antwoord worden beschreven. Als dit nog steeds niet werkt, legt het artikel ook een aantal andere mogelijke oplossingen uit.

Voor meer informatie over dit onderwerp kunt u ook lees dit berichtop mijn blog.


Antwoord 5, autoriteit 3%

Als u de Microsoft Word-toepassing niet kunt vinden in DCOM

Probeer dit op een 64-bits systeem met 32-bits Office:

  1. Lijstitem
  2. Begin
  3. Rennen
  4. mmc-32
  5. Bestand
  6. Toevoegen Verwijder module
  7. Componentendiensten
  8. Toevoegen
  9. OK
  10. Console-root
  11. Componentendiensten
  12. Computers
  13. Mijn computer
  14. DCOM-configuratie

daarna

  1. Zoek “Microsoft Word 97 – 2003-document” (als het ontbreekt, controleer dan of
    uw Word is ook 64 bit (als uw Windows is))
  2. Klik met de rechtermuisknop -> Eigenschappen
  3. Ga naar tabblad Beveiliging en bewerk de keuzerondjes “Aanpassen” zodat
    IIS_IUSRS kan rechten hebben voor lancering en toegang
  4. Ga naar het tabblad Identiteit en kies “De interactieve gebruiker” Wijzigingen toepassen
    en probeer het opnieuw
  5. Als dit allemaal niet lukt, ga dan ook naar het tabblad “Algemeen” en in “Verificatie
    niveau” drop-down kies “Geen”.

Antwoord 6, autoriteit 2%

Naast het bovenstaande kwam ik een probleem tegen waarvan ik dacht dat ik het zou delen voor het geval andere mensen het ook tegenkomen.

De applicatiegroepgebruiker van mijn .net-app die interop gebruikte, is toegevoegd aan Admin, maar is niet van kracht geworden vanwege de iis-cachingomgeving. Na het uitvoeren van het bovenstaande naast een iisreset om de juiste beheerdersstatus van de app-poolgebruiker weer te geven, werkte alles prima.

Other episodes