Die Schriftwiedergabe schlägt fehl, wenn Code unter IIS 7.0 ausgeführt wird

1728
Marco Miltenburg

Ich habe eine ältere ASP-Website mit einem COM-Objekt, das unter IIS 7.0 unter Windows Server 2008 ausgeführt wird. Dies funktioniert im Allgemeinen gut, aber ich habe kürzlich ein ziemlich seltsames Problem gefunden, für das ich keine Lösung finden kann.

Es gibt eine Seite, die ein benutzerdefiniertes COM-Objekt aufruft (VB6-Code, ja, ich weiß), das ein Drittanbieter-Grafik-Rendering-COM-Objekt aufruft. Nach dem Testen haben wir festgestellt, dass dieser Code unter Windows 2003 und IIS 6.0 einwandfrei funktioniert, unter Windows Server 2008 und IIS 7.0 jedoch nicht. Das Problem ist, dass die Render-Engine von Drittanbietern nicht die richtige (benutzerdefiniert installierte) True-Type-Schriftart und eine Standardschriftart verwendet.

Wenn der Code von der ASP-Seite als VBScript-Datei unter einem Administratorkonto ausgeführt wird, verwendet das Rendering die richtige Schriftart. Sie denken also, es ist eine Erlaubnisfrage. Wenn ich jedoch VBScript unter demselben Konto ausführen, unter dem die Website und der IIS-Anwendungspool ausgeführt werden, wird auch die richtige Schriftart verwendet. Nur wenn der Code unter IIS 7.0 ausgeführt wird, wird er nicht mit der richtigen Schriftart gerendert. Wenn es von einem CMD-Feld unter demselben Konto ausgeführt wird, das IIS verwendet, wird es korrekt wiedergegeben.

Das Konto, das IIS verwendet, ist ein benutzerdefiniertes Konto (nicht NETWORK SERVICE) mit sehr geringen Berechtigungen, jedoch ausreichend, um zu funktionieren. Die Website wird seit Jahren auch mit COM-Objekten von Drittanbietern betrieben. Es ist das erste Mal, dass ein Problem wie dieses auftaucht.

Ich dachte, dass Berechtigungen für die Schriftart ein Problem sein könnten, obwohl dies nicht erklären würde, warum es außerhalb von IIS funktionieren würde. Um sicherzustellen, dass es nicht Teil des Problems ist, habe ich der Gruppe Jeder Leseberechtigung für die jeweilige Schriftart erteilt. Das Problem wurde dadurch nicht gelöst.

Wenn ich all das in Betracht ziehe, denke ich, dass meine Frage darauf ankommt, was IIS anders macht, was dazu führen kann, dass der Code nicht die richtige Schriftart verwendet. Ich weiß, dass IIS 7.x das Anwendungspoolkonto automatisch in die Gruppe IIS_IUSRS einfügt, bevor der Anwendungspool gestartet wird. Ich habe das Konto jedoch bereits manuell zu dieser Gruppe hinzugefügt. Wenn ich also das VBScript in einem CMD-Feld unter diesem Konto ausführte, ist das Konto auch Teil der IIS_IUSRS-Gruppe. Das sollte also dasselbe sein.

Ich habe keine Ideen mehr, wie ich das lösen kann. Alle Ideen, Tipps oder Vorschläge sind willkommen.

0

2 Antworten auf die Frage

0
Marco Miltenburg

Ich habe es vor einigen Wochen geschafft, dieses Problem zu lösen, und ich werde meine eigene Frage zum Nachschlagen beantworten, nachdem ich gerade eine E-Mail von einem anderen Superuser-Benutzer erhalten habe, der ähnliche Probleme hatte.

Das Problem scheint nur für Windows Server 2008 sehr spezifisch zu sein, möglicherweise aufgrund eines Fehlers in dieser Windows-Version. Bei der Schriftart handelt es sich um eine unbekannte benutzerdefinierte Schriftart, die von einer kleinen Schriftfirma gekauft wurde. Wir hatten bereits eine neue Version der Schriftart angefordert und bereits versucht, sie in einigen Fonteditoren zu laden und erneut zu speichern, jedoch ohne Erfolg.

Schließlich konnte ein kleiner Freeware-Fonteditor namens Type Light von CR8 Software Solutions das Problem beheben. Das Laden der Schriftart in diesem Editor und das erneute Speichern der Schriftart wurde in Windows Server 2008 behoben. Seitdem können wir die Schriftart wie jede andere Schriftart verwenden.

0
chillNZ

Ich weiß, dass Sie eine Lösung gefunden haben, aber ich hatte ein sehr ähnliches Problem wie Sie (beim Ausführen einer Anwendung über eine geplante Task würde die Standardschriftart verwendet, bei lokaler Ausführung jedoch die benutzerdefinierte Schriftart, die ich installiert habe.) Ich fand eine andere Lösung. Unter Server 2008 gibt es ein Problem, bei dem benutzerdefinierte Schriftarten nicht unmittelbar nach der Installation für nicht interaktive Benutzer registriert werden, wohingegen normale Benutzer (dh, wenn ein Benutzer auf dem Computer tatsächlich angemeldet ist), die Schriftart sofort registrieren.

Die Lösung, die für mich funktionierte, bestand darin, einfach den Computer neu zu starten, auf dem die Schrift installiert war, und die Schrift begann unter den nicht interaktiven Konten zu arbeiten, da der Computer beim Einschalten des Computers korrekt registriert wird. Es scheint, dass bei der Installation der Schriftart ein Fehler aufgetreten ist, bei dem die Schriftart für nicht interaktive Benutzer erst nach einem Neustart korrekt registriert wird.