2010-06-29 13 views
7

Meine Website hat einen Handler (FileDownload.ashx), der alle Datei-Download-Anfragen behandelt.ASP.Net 4.0 - Zugriff auf RouteData von einem ASHX aus?

Ich habe vor kurzem meine Website nach ASP.NET 4.0 migriert, und es verwendet jetzt Routing weitgehend. Alles funktioniert gut, wenn sie mit Seitenanforderungen (aspx) zu tun, aber es funktioniert nicht mit meinem Handler - begegne mir die folgenden Fehler:

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

Dies macht Sinn, da Routing nur auf der Seite implementiert ist.

Welche Schritte muss ich ergreifen, um Routing und meine .ashx zusammen verwenden zu können? Ich möchte in der Lage sein, RouteData.Values von der Route zu extrahieren.

public class FileDownload : IHttpHandler 
{ 
} 

Antwort

1

Klingt wie ein IIS-Problem.

Funktioniert das, wenn Sie versuchen, den ASP.NET Development Server (Cassini) zu verwenden?

Wenn Sie IIS6 verwenden, müssen Sie Wildcard-Anwendungszuordnungen verwenden - siehe here.

Sie werden auch müssen noch Ihre Routen nach jeder ASPX-Seite erstellen, wie folgt aus:

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

Haben Sie das getan? Wenn ja, würde ich sagen, dass Ihr Problem definitiv mit IIS ist.

Einen guten Artikel zu ASP.NET 4 Routing für IIS6 und IIS7 finden Sie unter here.

Viel Glück!

+0

Danke für Ihre Hilfe! –

Verwandte Themen