2010-06-29 16 views
7

Mon site Web a un gestionnaire (FileDownload.ashx) qui traite toutes les demandes de téléchargement de fichiers.ASP.Net 4.0 - Comment accéder à RouteData depuis un ASHX?

J'ai récemment migré mon site vers ASP.NET 4.0, et il utilise maintenant beaucoup le routage. Tout fonctionne très bien lorsque le traitement des demandes de page (ASPX), mais il ne fonctionne pas avec mon gestionnaire - je rencontre l'erreur suivante:

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

Cela est logique, car le routage est uniquement mis en œuvre dans la page.

Quelles étapes dois-je suivre pour pouvoir utiliser le routage et mon fichier .ashx ensemble? Je veux être en mesure d'extraire RouteData.Values de l'itinéraire.

public class FileDownload : IHttpHandler 
{ 
} 

Répondre

1

Cela ressemble à un problème IIS.

Est-ce que cela fonctionne si vous essayez d'utiliser le serveur de développement ASP.NET (Cassini)?

Si vous utilisez IIS6, vous devez utiliser des mappages d'application génériques - voir here.

Vous devez encore créer vos itinéraires selon une page ASPX, comme ceci:

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

Avez-vous fait cela? Si oui, je dirais que votre problème est définitivement avec IIS.

Voir here pour un bon article sur le routage ASP.NET 4 pour IIS6 et IIS7.

Bonne chance!

+0

Merci pour votre aide! –