2010-06-29 23 views
7

Mi sitio web tiene un controlador (FileDownload.ashx) que se ocupa de todas las solicitudes de descarga de archivos.ASP.Net 4.0 - ¿Cómo acceder a RouteData desde una ASHX?

He migrado recientemente mi sitio a ASP.NET 4.0, y ahora se utiliza ampliamente enrutamiento. Todo funciona bien cuando se trata de solicitudes de página (aspx), pero no funciona con mi manejador - me encuentro con el siguiente error:

Type '.Handlers.FileDownload' does not inherit from 'System.Web.UI.Page'.

Esto tiene sentido, ya que el enrutamiento sólo se implementa en la página.

¿Qué pasos debo seguir para poder utilizar el enrutamiento y mi .ashx juntos? Quiero poder extraer RouteData.Values de la ruta.

public class FileDownload : IHttpHandler 
{ 
} 

Respuesta

1

Suena como un problema de IIS.

hace este trabajo si se trata de usar el servidor de desarrollo de ASP.NET (Cassini)?

Si está utilizando IIS6 tendrá que utilizar comodines asignaciones de aplicación - ver here.

Usted también todavía tiene que crear sus rutas de acuerdo con cualquier página ASPX, así:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    string[] allowedMethods = { "GET", "POST" }; 
    HttpMethodConstraint methodConstraints = new HttpMethodConstraint(allowedMethods); 

    Route fileDownloadRoute = new Route("{foo}/{bar}", new FileDownload()); 
    fileDownloadRoute.Constraints = new RouteValueDictionary { { "httpMethod", methodConstraints } }; 

    routes.Add(fileDownloadRoute); 
} 

¿Ha hecho eso? Si es así, diría que su problema es definitivamente con IIS.

Consulte here para obtener un buen artículo sobre enrutamiento ASP.NET 4 para IIS6 e IIS7.

¡Buena suerte!

+0

¡Gracias por su ayuda! –

Cuestiones relacionadas