2010-06-29 5 views
7

Il mio sito Web ha un gestore (FileDownload.ashx) che gestisce tutte le richieste di download di file.ASP.Net 4.0 - Come accedere a RouteData da un ASHX?

Ho recentemente migrato il mio sito in ASP.NET 4.0 e ora utilizza il routing in modo esteso. Tutto funziona bene quando si tratta di richieste di pagine (aspx), ma non funziona con il mio gestore - ho incontrato il seguente errore:

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

Questo ha senso, come il routing è implementato solo nella pagina.

Quali passaggi devo seguire per poter utilizzare insieme il routing e il mio .ashx? Voglio essere in grado di estrarre RouteData.Values dal percorso.

public class FileDownload : IHttpHandler 
{ 
} 

risposta

1

Sembra un problema con IIS.

Funziona se si tenta di utilizzare il server di sviluppo ASP.NET (Cassini)?

Se si utilizza IIS6 è necessario utilizzare i mapping di applicazioni jolly - vedere here.

Avrete anche ancora bisogno di creare i percorsi come da qualsiasi pagina ASPX, in questo modo:

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); 
} 

Hai fatto? Se è così, direi che il problema è sicuramente con IIS.

Vedere here per un buon articolo su ASP.NET 4 Routing per IIS6 e IIS7.

Buona fortuna!

+0

Grazie per il vostro aiuto! –