Benutzer mit den meisten Antworten
Langsame Prozesse in anderem Apppool auslagern

Frage
-
Hi,
Dotnetnuke-Portal, eigene Navigation im Portal, Webseiten werden im iFrame angezeigt.
Über meine Navigation im Dotnetnuke-Portal lade ich die Webseiten (aspx) in das iFrame, welches sich im Dotnetnuke Skin/Template befindet.
Nun habe ich Berichte und Tabellen die ich im iFrame anzeige, welche sehr Rechenintensiv sind und bis zu 10 Sekunden Wartezeit erfordern. Sämtliche andere Webseitenbenutzer müssen dann warten.
Nun möchte ich diese rechenintensive Seiten in einem anderen AppPool laufen lassen, also "auslagern". Diese sollten sich aber in der Security des Portals einfinden, also bei unberechtigtem Direktaufruf der URL das Dotnetnuke-Standard-Login anzeigen.
Nun habe ich im Root meiner Website ein Pfad und daraus eine Applikation erstellt und einem anderen AppPool zugwiesen. Darin enthalten eine default.aspx mit Webconfig usw.
Nun erhalte ich (nach vorherigem Login) bei Aufruf der Default.aspx viele Fehlermeldungen.
Frage:
Ist die Richtung meines Vorgehen korrekt?
Gibt es irgendwo eine Anleitung was ich beachten muss?Gruss und Dank
Philippe
Antworten
-
Hallo Philippe,
wenn Du einen Teil einer Anwendung in einen eigenen Anwendungspool auslagerst, werden diese Teile in einem separaten Prozess ausgeführt. Du hast aus der normalen Anwendung heraus keinen Zugriff auf diesen Prozess, die dort enthaltenen Objekte, ...
Wenn sämtliche anderen Requests auf die gesamte Website warten müssen, bis ein solcher Vorgang abgeschlossen ist, stimmt etwas an deiner Anwendung nicht. IIS kann problemlos mehrere parallele Requests gleichzeitig verarbeiten. Falls Du im Debugmodus arbeiten solltest (entweder als Debug kompiliert oder in der web.config <compilation debug="true" ... /> angegeben), ändere das auf jeden Fall mal für die produktive Anwendung, denn das kann genau solche Effekte auch auslösen.
Wenn es nicht der Debugmodus ist, kann man allerdings nicht sagen, was genau da nun nicht stimmt und was man ändern könnte, kann ich dir nicht sagen, da ich deinen Code nicht kenne.
Das Auslagern der rechenintensiven Teile wäre zwar wie gesagt möglich aber mit erheblichen Problemen und Umbauarbeiten in deiner Anwendung verbunden. Einfach nur die entsprechenden Seiten verlagern, wird nicht funktionieren.
Sinnvoller wäre es wahrscheinlich, die Arbeit in eigene Threads zu verlagern, also ansynchron zu verarbeiten, was allerdings ebenfalls einige Umbauarbeit erfordern könnte. Lies dich zu diesem Thema bitte mal hier ein:
https://www.google.de/#q=asp.net+async
P.S.: Da Du "viele Fehlermeldungen" schreibst: Wenn man Fehlermeldungen erhält, ist es immer sinnvoll, diese genau und vollständig (keine Eigeninterpretation, gekürzte Fassung, ...) inkl. des Codes, der den Fehler verursacht, hier zu posten. Da uns hier die Glaskugeln schon vor einigen Jahren ausgegangen sind, raten wir halt sonst einfach und das klappt nicht allzu zuverlässig :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 27. September 2016 15:43
- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 4. Oktober 2016 07:08
- Als Antwort markiert P.Belloni Freitag, 7. Oktober 2016 10:49
Alle Antworten
-
Hallo Philippe,
wenn Du einen Teil einer Anwendung in einen eigenen Anwendungspool auslagerst, werden diese Teile in einem separaten Prozess ausgeführt. Du hast aus der normalen Anwendung heraus keinen Zugriff auf diesen Prozess, die dort enthaltenen Objekte, ...
Wenn sämtliche anderen Requests auf die gesamte Website warten müssen, bis ein solcher Vorgang abgeschlossen ist, stimmt etwas an deiner Anwendung nicht. IIS kann problemlos mehrere parallele Requests gleichzeitig verarbeiten. Falls Du im Debugmodus arbeiten solltest (entweder als Debug kompiliert oder in der web.config <compilation debug="true" ... /> angegeben), ändere das auf jeden Fall mal für die produktive Anwendung, denn das kann genau solche Effekte auch auslösen.
Wenn es nicht der Debugmodus ist, kann man allerdings nicht sagen, was genau da nun nicht stimmt und was man ändern könnte, kann ich dir nicht sagen, da ich deinen Code nicht kenne.
Das Auslagern der rechenintensiven Teile wäre zwar wie gesagt möglich aber mit erheblichen Problemen und Umbauarbeiten in deiner Anwendung verbunden. Einfach nur die entsprechenden Seiten verlagern, wird nicht funktionieren.
Sinnvoller wäre es wahrscheinlich, die Arbeit in eigene Threads zu verlagern, also ansynchron zu verarbeiten, was allerdings ebenfalls einige Umbauarbeit erfordern könnte. Lies dich zu diesem Thema bitte mal hier ein:
https://www.google.de/#q=asp.net+async
P.S.: Da Du "viele Fehlermeldungen" schreibst: Wenn man Fehlermeldungen erhält, ist es immer sinnvoll, diese genau und vollständig (keine Eigeninterpretation, gekürzte Fassung, ...) inkl. des Codes, der den Fehler verursacht, hier zu posten. Da uns hier die Glaskugeln schon vor einigen Jahren ausgegangen sind, raten wir halt sonst einfach und das klappt nicht allzu zuverlässig :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 27. September 2016 15:43
- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 4. Oktober 2016 07:08
- Als Antwort markiert P.Belloni Freitag, 7. Oktober 2016 10:49
-
Hallo Philippe,
prima, dass es nun funktioniert.
Und was hast Du gemacht, dass es nun klappt? :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi Stefan,
Eben nichts, da du ja eben recht hast.
Ich weiss ja, dass die Zugriffe auf den IIS durch die Anfragen parallel laufen. Sogar im Debug-Modus konnte ich ja die gleichzeitigen Zugriffe debugen.
Dennoch hatte ich mal bei einem Test auf das langsame Modul mit gleichzeitigem Zugriff aus einem anderen Browser eine komische Reaktion. Evtl. war die eine Seite noch nicht vorkompiliert und dadurch langsam. Keine Ahnung mehr. Da war ich mir dann unsicher, ob dennoch z.B. ein Datenbank Abfrage, die einige Sekunden dauert, die anderen User ausbremst.Fazit: Man könnte diese Frage löschen :-)
Gruss und Dank
Philippe