2011-09-27 62 views
7

Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.System.Web.HttpException: La respuesta no está disponible en este contexto error

Detalles de excepciones: System.Web.HttpException: La respuesta no está disponible en este contexto.

Source Error: 


Line 10: public void Download(string filename) 
Line 11: { 
Line 12:   Response.ContentType = "application/exe"; 
Line 13:   Response.AppendHeader("Content-Disposition", filename); 
Line 14:   Response.TransmitFile(Server.MapPath("~/Resources/bb.exe")); 

estoy teniendo este método dentro de una clase, i llamar a este método cuando haga clic en un botón

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

public class Common: System.Web.UI.Page 
{ 
} 

dónde voy mal

Respuesta

10

Cuando se utiliza el objeto de respuesta de una página aspx , su clase codebehind o un control de usuario , el objeto de respuesta está directamente disponible porque todos estos derivan del objeto de página.

Cuando se utiliza el objeto respuesta en su propia clase, el objeto no está disponible, pero se puede acceder a ella:

HttpContext.Current.Response. -> algo

+1

Gracias. Me encontré con este problema cuando llamé a un método que usaba la reflexión aunque estaba en la misma clase de página web. – styfle

3

Simplemente no puede usar el objeto Response de la página como lo hace, porque este objeto representa la respuesta que ya se envió, por lo que no puede modificarlo o usar TransmitFile con él.

Debe crear su propio controlador para escribir el archivo en la salida del servidor. Consulte la documentación IHttpHandler (http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.aspx)

2

No estoy seguro de Cómo,

Pero una cadena conexión rota en mi archivo Web.config - causó el mismo problema.

Cuestiones relacionadas