5

Come posso aggiungere la sessione a un falsoContext?Aggiungi la sessione al falso httpContext nel progetto C# MVC

Questa funzione è stata creata per richiesta parziale in cui il contenuto deve essere restituito come stringa. Solo non abbiamo sessioni ora nella richiesta parziale.

e non posso aggiungerli come fakeContext.Session = HttpContext.Current.Session

qualcuno un suggerimento?

///<summary> 
    /// Invoke the partial request and return the result as a string. 
    ///</summary> 
    ///<param name="context">The controller context to use.</param> 
    ///<returns>A string containing the result of the partial request.</returns> 
    public String InvokeAsString(ControllerContext context) 
    { 
     var stringBuilder = new StringBuilder(); 
     //create memory writer used for httpresponse. 
     var memoryWriter = new StringWriter(stringBuilder); 
     //create a fake response 
     var fakeResponse = new HttpResponse(memoryWriter); 
     //create a fake context. 
     var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse); 
     var oldPrincipal = context.HttpContext.User; 
     fakeContext.User = oldPrincipal; 

     //create a fake controllercontext to use for the default invoke action. 
     var fakeControllerContext = new ControllerContext(new HttpContextWrapper(fakeContext), context.RouteData, context.Controller);       

     var oldContext = HttpContext.Current; 
     HttpContext.Current = fakeContext; 

     ManagedWebSessionContext.Bind(
      HttpContext.Current, 
      SessionManager.SessionFactory.OpenSession(new Interceptor())); 

     //perform the default invoke action. 
     Invoke(fakeControllerContext); 
     HttpContext.Current = oldContext; 

     //Flush memory and return output 
     memoryWriter.Flush(); 
     var content = stringBuilder.ToString(); 

     return content; 
    } 

risposta

5

trovato la soluzione

fakeContext.Items.Add ("AspSession", HttpContext.Current.Session);

In questo modo è possibile modificare la sessione anche se fakeContext.Session è readOnly