2012-05-14 4 views
6

Ich muss irgendwie meine benutzerdefinierten Daten an die anfügen, die von meinen benutzerdefinierten IIS-Modulen behandelt wird - damit Code, der in früheren Phasen der IIS-Pipeline ausgeführt wird, ein Objekt anfügt und Code, der in späteren Phasen ausgeführt wird, das Objekt abrufen und verwenden kann Keine andere Funktionalität der IIS-Pipelineverarbeitung wird durch Hinzufügen dieses Objekts geändert.Wie verknüpfe ich einige benutzerdefinierte Daten mit aktuellen HttpRequest?

Die Daten müssen nur innerhalb einer HTTP-Anforderung bestehen bleiben - ich brauche sie nicht zwischen den Anforderungen zu speichern. Ich muss es für jede neue Anfrage automatisch "zurücksetzen" - so dass, wenn eine neue Anfrage kommt, es keine Objekte enthält, die an die vorherige Anfrage angehängt wurden.

Sieht aus wie HttpContext.Items ist der Weg zu gehen, obwohl MSDN Beschreibung seines Zwecks ist nicht sehr klar.

Verwendet HttpContext.Current.Items die Möglichkeit, mein Problem zu lösen?

+0

Entschuldigung, ich habe meine Antwort gelöscht - es scheint, ich verstehe Ihre Frage nicht vollständig. Kannst du es ausarbeiten? –

+0

@Royi Namir: Ich habe die Frage aktualisiert. – sharptooth

+0

Ja, es klingt wie 'HttpContext.Items' ist, was Sie in Ihrem Szenario wollen. Einverstanden, die MSDN-Erklärung ist ziemlich knapp, aber Sie werden feststellen, dass so ziemlich alles, womit Sie arbeiten, 'IHttpModule' oder' IHttpHandler' ('System.Web.UI.Page' zum Beispiel implementiert' IHttpHandler' ist). –

Antwort

4

Dies sollte funktionieren - ich habe dies in einem Projekt zuvor getan.

Ich habe eine Klasse, die eine statische Eigenschaft wie diese hat -

public class AppManager 
{ 
    public static RequestObject RequestObject 
    { 
     get 
     { 
      if (HttpContext.Current.Items["RequestObject"] == null) 
      { 
       HttpContext.Current.Items["RequestObject"] = new RequestObject(); 
      } 

      return (RequestObject)HttpContext.Current.Items["RequestObject"]; 
     } 
     set { HttpContext.Current.Items["RequestObject"] = value; } 
    } 
} 

Und dann RequestObject enthält alle meine benutzerdefinierten Daten so dann in meiner app kann ich ich Bisher

AppManager.RequestObject.CustomProperty 

zu tun haben Probleme mit der Funktionsweise von HttpContext.Items treten nicht auf.

Verwandte Themen