2012-05-14 29 views
6

Özel verilerimi IIS özel modüllerim tarafından işlenen HttpRequest'a bir şekilde eklemem gerekir. Böylece, IIS pipeline'ın önceki aşamalarında çalışan kod bir nesneyi ekler ve daha sonraki aşamalarda çalışan kod nesneyi alıp kullanabilir ve IIS boru hattı işlemenin başka hiçbir işlevi, bu nesneyi ekleyerek değiştirilmez.Bazı özel verileri geçerli HttpRequest ile nasıl ilişkilendiririm?

Verilerin yalnızca bir HTTP isteği içinde kalması gerekir - İstekler arasında saklanmak için buna ihtiyacım yoktur. Her yeni istek için otomatik olarak "sıfırla" durumuna ihtiyacım var - böylece yeni bir istek geldiğinde kodumun önceki isteğe eklenmiş nesneler içermemesi.

HttpContext.Items'un yolu açık görünüyor, ancak amacının MSDN tanımı çok net değil.

Sorunumu çözmenin yolunu HttpContext.Current.Items mu kullanıyorsunuz?

+0

Üzgünüm cevabımı sildim - sorununuzu tamamen anlayamıyorum. detaylandırır mısın? –

+0

@Royi Namir: Soruyu güncelledim. – sharptooth

+0

Evet, 'HttpContext.Items' senaryoda istediğiniz gibi geliyor. Anlaşıldı, MSDN açıklaması oldukça kısa ama işe yarayacak olan hemen hemen her şeyi, 'IHttpModule' veya 'IHttpHandler' ('System.Web.UI.Page ')' i uygulayacaksınız.). –

cevap

4

Bu işe yaramalı - Bunu daha önce bir projede yaptım.

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; } 
    } 
} 

Sonra RequestObject Uygulamamda ben Şimdiye kadar var

AppManager.RequestObject.CustomProperty 

bunu yapabilirsiniz sonra Tüm özel verileri içeren -

Böyle bir statik özelliği olan bir sınıf var HttpContext.Items çalışır şekilde herhangi bir sorunla karşılaşmayın.

İlgili konular