Problem: Beim Aufruf der MapPoint-Komponente (oder einer anderen Office-Komponente) aus einer ASP .NET Web-Applikation heraus wird eine Exception ausgelöst:
0x80080005 (CO_E_SERVER_EXEC_FAILURE) – Starten des Servers fehlgeschlagen
Ursache: MapPoint gehört in die Reihe der Office-Applikationen. Diese sind nur für den interaktiven Einsatz (also mit GUI) unter einem normalen Windows-Benutzerkonto vorgesehen. In der Webapplikation wird MapPoint allerdings unter dem Konto „Netzwerkdienst“ ausgeführt, welches kein normales Benutzerkonto ist (eine Anmeldung bei Windows ist unter diesem Konto z.B. nicht möglich). Microsoft erklärt u.a. unter folgendem Link ausdrücklich, dass bei einer derartigen Verwendung u.a.
der oben beschriebene Fehler auftreten kann.
https://support.microsoft.com/en-us/kb/257757
Vor einer nicht-interaktiven, automatisierten Ansteuerung von Office-Komponenten wird gewarnt.
Workaround (kurz): Es muss ein neues, interaktives Benutzerkonto eingerichtet werden. Der IIS-Applicationpool, der die Web-Applikation ausführt, muss anstelle der Identität „Netzwerkdienst“ unter der Identität dieses Kontos arbeiten. Dem neuen Konto müssen Berechtigungen zur Ausführung der MapPoint-Komponente sowie entsprechende Datenbankberechtigungen erteilt werden.
Workaround (lang):
1. Richten Sie ein neues Benutzerkonto ein mit einem Passwort, das niemals abläuft. Für die ASP .NET-Anwendung kann z.B. folgender Nutzer eingerichtet werden:
Name: MapPointAutoUser
PW: *****
2. Fügen Sie das Konto zur Gruppe IIS_IUSRS hinzu (im Server-Manager --> „Konfiguration“).
3. Loggen Sie sich unter dem neuen Konto am Computer ein. Öffnen Sie MapPoint. Es wird ein Popup erscheinen, welches zur Akzeptanz der Lizenzbedingungen auffordert. Bestätigen und ggf. weitere Popups abarbeiten.
4. Für den neuen Nutzer oder besser für die ganze Gruppe IIS_IUSRS: Stellen Sie Berechtigungen für die folgenden Ordner ein (im Windows-Explorer Rechtsklick auf den Ordner --> „Eigenschaften“ --> „Sicherheit“):
64 bit-Rechner
C:\Windows\Temp - Modify
C:\Windows\syswow64\config - Read
C:\Windows\syswow64\config\systemprofile - Read
C:\Windows\syswow64\config\systemprofile\AppData - Modify
C:\Windows\syswow64\config\systemprofile\Desktop - Modify (Create it if it does not exist)
32 bit-Rechner
C:\Windows\Temp - Modify
C:\Windows\system32\config - Read
C:\Windows\system32\config\systemprofile - Read
C:\Windows\system32\config\systemprofile\AppData - Modify
C:\Windows\system32\config\systemprofile\Desktop - Modify (Create it if it does not exist)
5. Geben Sie dem neuen Nutzer oder besser der ganzen Gruppe IIS_IUSRS Start- und Aktivierungsberechtigungen für COM: Rufen Sie dazu die „Komponentendienste“ auf . Rechtsklick auf „Arbeitsplatz“ --> „Eigenschaften“ --> „COM-Sicherheit“. Bei „Zugriffsberechtigungen“ und bei „Start- und Aktivierungsberechtigungen“ klicken Sie jeweils auf „Standard bearbeiten“. Fügen Sie den Nutzer bzw. die Gruppe hinzu und vergeben Sie alle
Berechtigungen.
6. Navigieren Sie bei den Komponentendiensten zur „DCOM-Konfiguration“ und suchen Sie die MapPoint-Komponenten heraus --> „Eigenschaften“ --> „Sicherheit“: Stellen Sie sicher, dass auch dort der neue Nutzer bzw. die Gruppe aufgeführt ist und alle Berechtigungen besitzt.
7. Rufen Sie den Registrierungseditor auf (regedit.exe) --> HKEY_CLASSES_ROOT --> CLSID --> entsprechende ID heraussuchen --> Rechtsklick “Berechtigungen” --> dort auch den Nutzer bzw. die Gruppe hinzufügen und alle Berechtigungen vergeben.
8. Öffnen Sie den IIS-Manager und wählen Sie den eingesetzten Anwendungs-Pool aus (z.B. ASP .NET v4.0) . „Erweiterte Einstellungen --> „Identität“ --> dort den neuen Nutzer bzw. die Gruppe eintragen (evtl. noch „Benutzerprofil laden“ auf „true“ setzen, ist aber evtl. nicht nötig).
9. Jetzt muss der Nutzer bzw. die Gruppe noch die nötigen Datenbankberechtigungen bekommen. Das erfolgt im SQL Server Management Studio:
-
- Den entsprechenden SQL-Server ausklappen --> „Sicherheit“ --> „Anmeldungen“ -->
„neue Anmeldung“--> den neuen Nutzer eintragen
- Unter „Anmeldungen“ Rechtsklick auf den neuen Nutzer --> „Eigenschaften“ :
- Serverrollen --> „public“
- Benutzerzuordnung --> „Name der Datenbank der Webanwendung“
- Unter „Datenbanken“ jetzt die Datenbank der Webanwendung raussuchen -->
„Sicherheit“ --> „Benutzer“ --> den neuen Nutzer hinzufügen.
- Bei den Eigenschaften des neuen Nutzers:
- Standardschema: „dbo“
- Sicherungsfähige Elemente: „Aktualisieren“, „Ausführen“, „Auswählen“,
„Einfügen“.