2009-03-04 4 views
1

J'ai une grille qui fournit des liens permettant aux utilisateurs de télécharger des fichiers. Les fichiers sont stockés en dehors de l'application, les références de chemin sont lues dans la base de données et un gestionnaire HTTP (* .ashx) est utilisé pour servir chaque fichier demandé. Il est cependant possible qu'une entrée de base de données pointe vers un fichier inexistant. J'attrape le FileNotFoundException, mais je ne sais pas quelle serait la meilleure méthode pour informer l'utilisateur du fichier manquant (afin qu'il puisse contacter le support).Meilleure façon de gérer un 404 dans un gestionnaire HTTP de téléchargement de fichier?

La première idée est de définir un code 404 standard sur la réponse, et c'est ce que je fais maintenant. Un moyen plus pratique serait d'afficher une notification (jQuery) sur un fichier manquant, mais le téléchargement du fichier n'est pas fait en AJAX, donc cela impliquerait un processus en deux étapes - un gestionnaire onclick côté client appelle un service web méthode pour vérifier si le fichier existe, sinon, j'annule le clic (return false) et affiche un message amical à l'utilisateur. Si le fichier existe cependant, je procède à l'exécution normale. Mais cela ajoute encore un autre appel de serveur.

Avez-vous fait face à un problème similaire? Comment l'avez-vous résolu? Quelques clarifications - l'application est construite en ASP.NET 2.0 et utilise jQuery pour appeler les méthodes de service Web.

Répondre

1

Pawel, il semble que vous avez répondu à votre question déjà ...

... (afin qu'ils puissent contacter support) ...

En déclarant ce qui précède, je Nous vous suggérons de créer une page 404 personnalisée qui informe l'utilisateur du fichier qui n'existe pas sur le disque et de lui fournir des informations sur la façon d'entrer en contact avec le bureau de support.

J'ai créé un gestionnaire HTTP pour gérer les fichiers et si un fichier n'existe pas sur le disque, je renvoie une réponse 404. J'ai configuré IIS pour afficher une page personnalisée si une réponse 404 a été lancée .. (et je fais la même chose pour l'erreur 500).

J'espère que cela aidera et bonne chance de trouver la solution qui correspond à vos besoins!

+0

Mais je ne peux pas faire la différence entre une situation de fichier manquante et celle d'une page entière manquante. Je pourrais fournir une explication plus élaborée sur la page 404, comme "si vous essayiez de télécharger un fichier de support de contact, si vous essayiez d'accéder à une page, il ne peut pas être trouvé", etc ..) –

+1

Bien vous pourriez mettre en œuvre dans votre gestionnaire HTTP pour rediriger vers un fichier non trouvé 404 page spécifique, sinon retourner un «normal» 404? – RuudKok

+0

Doh! Bien sûr, la redirection fonctionne! Je comptais sur le cadre pour rediriger vers la page 404 en passant un code d'état, au lieu de faire un simple Response.Redirect(). Tellement évident ... Merci! –

Questions connexes