2013-05-08 20 views
6

Ho due metodi che utilizzano HttpContext.Current per ottenere l'ID utente. Quando chiamo individualmente questo metodo, ottengo l'ID utente ma quando viene chiamato lo stesso metodo utilizzando Parallel.Invoke() HttpContext.Current è null.Come passare HttpContext.Current ai metodi chiamati usando Parallel.Invoke() in .net

Conosco il motivo, sto solo cercando un modo per aggirare l'utilizzo di HttpContext.Current. So che questo non è thread-safe, ma voglio solo per eseguire l'operazione di lettura

public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Display(); 
      Display2(); 
      Parallel.Invoke(Display, Display2); 
     } 

     public void Display() 
     { 
      if (HttpContext.Current != null) 
      { 
       Response.Write("Method 1" + HttpContext.Current.User.Identity.Name); 
      } 
      else 
      { 
       Response.Write("Method 1 Unknown"); 
      } 
     } 

     public void Display2() 
     { 

      if (HttpContext.Current != null) 
      { 
       Response.Write("Method 2" + HttpContext.Current.User.Identity.Name); 
      } 
      else 
      { 
       Response.Write("Method 2 Unknown"); 
      } 
     } 
    } 

Grazie

risposta

5

memorizzare un riferimento al contesto, e passarlo ai metodi come argomento ...

Come questo:

protected void Page_Load(object sender, EventArgs e) 
    { 
     var ctx = HttpContext.Current; 
     System.Threading.Tasks.Parallel.Invoke(() => Display(ctx),() => Display2(ctx)); 
    } 

    public void Display(HttpContext context) 
    { 
     if (context != null) 
     { 
      Response.Write("Method 1" + context.User.Identity.Name); 
     } 
     else 
     { 
      Response.Write("Method 1 Unknown"); 
     } 
    } 

    public void Display2(HttpContext context) 
    { 

     if (context != null) 
     { 
      Response.Write("Method 2" + context.User.Identity.Name); 
     } 
     else 
     { 
      Response.Write("Method 2 Unknown"); 
     } 
    } 
Problemi correlati