Wird eine Anforderung in IIS für einen einzelnen Thread ausgeführt?

8

Wir haben ein System, das in IIS läuft.

Das System sollte immer mit der gleichen "Kultur" laufen, aber wir können uns nicht darauf verlassen, dass die Servereinstellungen richtig eingestellt sind.

Eine Möglichkeit ist es, die Kultur jedes Mal anzugeben, wenn wir einen ToString machen.

Allerdings haben wir uns gefragt, ob es möglich ist, die Kultur am Anfang einer Methode auf einen Thread zu setzen und sich darauf zu verlassen, dass der gesamte Code dieser Methode auf demselben Thread ausgeführt wird.

    
Shiraz Bhaiji 29.10.2009, 14:06
quelle

4 Antworten

2

Ändern Sie die Kultur dynamisch? Wenn nicht, können Sie die Kultur in der Datei web.config festlegen.

%Vor%

Sie können es auch auf Seitenebene festlegen:

%Vor%

Und im Thread:

%Vor%

Aber für das, was Sie verwenden, scheint die Ebene auf Seitenebene oder web.config am besten geeignet zu sein.

    
Fenton 29.10.2009, 14:13
quelle
18

Nein. ASP.NET weist Thread-Agilität auf. In einigen Situationen kann die Anforderung an bestimmten Punkten in ihrem Anforderungslebenszyklus von einem Thread zu einem anderen wechseln. (Es ist nicht "nur irgendwo"; dieser Blogbeitrag gibt genauere Informationen.)

Leider ist dies nicht so klar dokumentiert, wie es sein könnte, und es ist relativ schwer zu provozieren - so können Sie leicht in die Situation geraten, in der unter Testbelastungen alles in Ordnung ist - aber in der Produktion läuft es schief.

>

Aber einige Tests, die ich vor einer Weile ausgeführt habe (suche nach "jskeet" innerhalb der Seite) schlägt vor, dass Thread.CurrentCulture erhalten bleibt, selbst wenn die Agilität des Threads einsetzt.

    
Jon Skeet 29.10.2009 14:10
quelle
3

Wenn Sie wissen, dass die Kultur für alle Threads gleich bleiben soll, sollte das ein guter Ansatz sein.

Wenn Sie jedoch die Kultur auf einer pro-Request-Basis einrichten möchten, die sich von einer Anfrage zur nächsten unterscheiden kann, ist dies möglicherweise kein zuverlässiger Ansatz. Unter hoher Last haben wir Threads gesehen, die für mehrere Anforderungen und Anforderungen wiederverwendet wurden, die von einem Thread in einen anderen migriert wurden, wobei ihre Kultur (und andere threadstatische Informationen) zurückgelassen wurden.

    
Rex M 29.10.2009 14:10
quelle
1

Wie bereits erwähnt, könnte ASP.NET Teile der gleichen Anfrage in verschiedenen Threads verarbeiten. Sie sprechen jedoch davon, thread-static stuff am Anfang jeder Methode zu initialisieren, so dass diese Einschränkung nicht auf Sie zutrifft: Ich bin mir ziemlich sicher, dass ASP.NET den aktuellen Thread in der Mitte einer Ihrer Methoden , so sollte Ihr Ansatz in Ordnung sein.

    
Heinzi 29.10.2009 14:19
quelle

Tags und Links