3 Stimmen

IIS-App-Pool und Caching

Ich habe eine öffentliche Liste erstellt, die von meiner Webanwendung aus ausgeführt wird und auf die der Zugriff erfolgt.

private static List<x> _x;
static readonly object lockObjx = new object();

public static void XCache()
{
            if (_x != null)
                return;

            lock (lockObjx)
            {
               _x = GetFromDatabase();
            }
}

Das alles läuft problemlos unter dem Standard-App-Pool. Ich muss nun einen Webdienst hinzufügen, der diesen Cache aktualisieren kann. Werde ich in der Lage sein, dies zu tun, die auf der Standard-App-Pool? Wenn nicht, gibt es einen Weg, wie ich dies tun kann, ohne etwas wie MEMCache zu installieren. Der Dienst und der Wepp laufen auf demselben Server.

5voto

driis Punkte 156110

Damit das funktioniert, müssen Sie den Dienst in dieselbe ASP.NET-Anwendung wie die Webanwendung einbinden. Das bedeutet in der Regel, dass sie in derselben Site in IIS ausgeführt werden.

Jede ASP.NET-Anwendung erhält ihre eigene AppDomain. Jede AppDomain hat ihre eigene Kopie aller Objekte, einschließlich statischer Verweise. Mit anderen Worten, die Daten werden nicht zwischen den AppDomains geteilt und somit auch nicht von einzelnen Anwendungen im IIS, selbst wenn sie im selben IIS-Prozess (AppPool) laufen.

Hier gibt es einen schönen Artikel: http://odetocode.com/Articles/305.aspx . Sie ist zwar schon etwas älter, sollte aber immer noch gültig sein.

1voto

Jay Shah Punkte 3167

Cache und Sitzungen sind spezifisch für die AppDomain (NICHT App Pool).

Verschiedene Webanwendungen haben immer verschiedene App-Domänen, auch wenn sie unter demselben App-Pool laufen. Sie haben also einen separaten Cache, separate Sitzungen, separate Objekte, separate statische Referenzen usw.

Es gibt jedoch eine Möglichkeit, Cache/Objekte zwischen verschiedenen Anwendungen desselben Anwendungspools gemeinsam zu nutzen: Gemeinsame Variable für Anwendungen innerhalb desselben AppPools?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X