Hallo zusammen,
leider komme ich hier nicht mehr weiter. Ich habe eine WebApi die mir über die Interop ein Powerpoint erstellt. Wenn ich die WebApi über den IIS Express laufen lasse wird mein PPT fehlerfrei generiert. Switche ich auf den lokalen IIS bekomme ich die Fehlermeldung: "System.OutOfMemoryException" und zwar beim öffnen (Größe: 58KB) eines bestehenden (nutze dies um eine Vorlage bzgl. CI Design). Wie gesagt der gleiche Aufruf funktioniert unter Express, aber im normalen IIS nicht.
var ppPresens = ppApp.Presentations.Open(fileName, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
Alternativ wäre es jetzt das ganze über OpenXML zu lösen, aber bevor ich alles umbauen muss und auch einarbeiten muss frage ich zuerst die Community.
Danke
Der IIS Express läuft unter Deinem User. Der AppPool der Anwendung auf dem IIS normalerweise als NetworkService.
Dieser hat aber keine Rechte COM Interop zu nutzen.
Entweder Du gibst dem AppPool eine eigene Identität / nutzt Impersonation oder Du verwendest OpenXML, was generell die bessere Variante ist.
Hinzu kommt, dass Du - wahrscheinlich - den kompletten Interop-Zugriff synchronisieren musst. Evtl. ist auch x64 / x86 bzw. Classic / Pipeline-Mode ein Problem (beachte dazu auch die AppPool-Einstellung).
Zudem besagt OutOfMemoryException nicht nur, dass der RAM am Limit ist, sondern fasst viele Möglichkeiten zusammen -> "Die Ressourcen reichen für diese Operation nicht mehr aus"; zB keine freien Handles mehr etc.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code