2011-08-28 21 views
5
public void getContent() { 
    string VirtualPath = "~/Content.aspx"; 
    var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page)) as IHttpHandler; 
    page.ProcessRequest(HttpContext.Current); 
} 

Estoy usando esa función para cargar el contenido de diferentes archivos, pero el "page.ProcessRequest (HttpContext.Current)" inserta el contenido en el contexto actual, y lo que necesito es la función para devolver el contenido del archivo especificado.¿Cómo puedo crear un nuevo HttpContext?

Me pregunto si existe una forma efectiva de crear un nuevo HttpContext, de modo que "page.ProcessRequest" no inserte nada en la respuesta actual.

Respuesta

3

Oded es correcto en la medida de lo posible que yo sé. No puede crear fácilmente su propia instancia de HttpContext. Sin embargo, aún puede lograr sus objetivos por otros medios.

Use un Server.Execute. http://msdn.microsoft.com/en-us/library/ms150027.aspx.

Puede especificar que HttpHandler se ejecute junto con un TextWriter para volcar el contenido.

1

No se puede crear un nuevo HttpContext, no sin mucho trabajo.

Es uno de los defectos de ASP.NET y el BCL - hace que las aplicaciones web no comprobable (o al menos muy difícil de probar sin HttpContext

no me queda claro en su requisito what I need is the function to return the content of the specified file -. Puede usted explicar por favor exactamente lo que quiere decir con eso?

+0

Bueno quiero cargar procesar archivos .aspx/interal y obtener el html regresan, pero yo no quiero hacerlo a través de WebRequest: -/modo que pueda almacenar el contenido/html de esos " módulos "y reutilizarlos sin hacer otra solicitud. –

+0

@Carlos - ¿Quiere decir que quiere usarlos como plantillas? – Oded

1

salida Pex/Moles su incluye un marco de burla que pueden burlarse de casi cualquier tipo o miembro, aunque su sellados o estática. (lo hace mediante el uso de una serie de pruebas a medida)

-1
public class HttpContextManager 
     { 
      private static HttpContextBase _context; 
      public static HttpContextBase Current 
      { 
       get 
       { 
        if (_context != null) 
         return _context; 

        if (HttpContext.Current == null) 
         throw new InvalidOperationException("HttpContext not available"); 

        return new HttpContextWrapper(HttpContext.Current); 
       } 
      } 

      public static void SetCurrentContext(HttpContextBase context) 
      { 
       _context = context; 
      } 

     } 
Cuestiones relacionadas