2008-11-14 7 views
1

Où puis-je configurer des erreurs personnalisées pour les répertoires de mon application tels que App_Code, App_Browsers, etc.? J'ai déjà customErrors configuré dans le web.config et cela fonctionne comme prévu. Par exemple,Erreurs personnalisées pour les dossiers "App"? (ASP.NET)

http://www.mysite.com/bla.aspx> redirige vers la page 404

mais

http://www.mysite.com/App_Code/> affiche "Le système ne peut pas trouver le fichier spécifié."

Il n'existe aucun répertoire App_Code physique pour mon site. Est-ce quelque chose que je peux changer dans IIS?

Répondre

1

Vous essayez de contenu du serveur à partir d'un dossier protégé ... ??

Je pense que vous pourriez avoir besoin pour permettre l'accès à ces dossiers pour obtenir les erreurs agréables que vous recherchez ...

http://www.webdavsystem.com/server/documentation/hosting_iis_asp_net/protected_folders

Cela étant dit ... il y a une raison pour laquelle ces dossiers sont protégés .

Je ne mettrais jamais tout ce dont j'avais besoin IIS pour servir dans des dossiers protégés.

Mais il y a toujours des raisons de faire quelque chose? j'ai cassé quelques règles dans ma courte durée de vie :)

MISE À JOUR:

trouvé quand je l'ai essayé cette place: http://support.microsoft.com/kb/942047/

On dirait que ces répertoires réservés un jet spécial de 404 vous pourriez être en mesure de obtenir IIS pour cibler le type 404.8 ... sans ouvrir ouverture servant à ces répertoires

+0

Non, je ne veux pas autoriser l'accès. Je veux juste que le message d'erreur pour ces dossiers ait un aspect cohérent comme toutes les autres erreurs. Désolé si ce n'était pas clair. –

+0

Pas de soucis ~, quel est le probable-capot qu'un utilisateur qui devine cette URL, et ils ont besoin de voir les erreurs propres? Tant que vous ne créez jamais une URL avec ces dossiers protégés, vous ne serez jamais demandé par un utilisateur final réel, je pense que le danger d'autoriser n'importe quel type de serveur ou de base de ces dossiers ne vaut pas les gains d'erreur uniforme pages? Bonne chance – BigBlondeViking

+0

Oui, je réalise que ce n'est pas un scénario probable. Je me demandais simplement s'il y avait un moyen facile de l'appliquer. microsoft.com fournit des erreurs personnalisées, alors que plusieurs autres sites fonctionnant sur asp.net ne le font pas. –

0

Une façon est de fournir une redirection dans le fichier global.asax:

void Application_Error(object sender, EventArgs e) 
{ 
    //uncomment this to narrow down 'helpful' microsoft messages 
    //HttpRequest request = ((HttpApplication)sender).Context.Request; 


    Exception ex = Server.GetLastError(); 
    //ErrorManager is a custom error handling module 
    ErrorManager.ProcessError(ex); 
    Response.Redirect("~/error.aspx?error=" + HttpUtility.UrlEncode(ex.Message), true); 
} 

{Sur une note de côté, je recevais une exception que je ne pouvais pas retrouver - il a juste dit « fichier pas trouvé »mais n'a pas dit quel fichier était manquant. Il s'est avéré être une référence d'image cassée dans un fichier css - la rupture sur la ligne deux du code ci-dessus a aidé à identifier le fichier manquant}

+0

J'ai essayé cela, mais a fini avec le même résultat. J'ai remarqué que plusieurs grands sites fonctionnant sous .NET affichent l'erreur générique. Peut-être que c'est juste moi, mais je préférerais que toutes les erreurs soient gérées avec élégance à l'utilisateur. Même SO affiche un écran vide si vous essayez d'accéder au répertoire/App_Code. –

1

Je crois que vous aurez besoin de définir les pages d'erreur dans IIS lui-même, comme les demandes vous parler de ne jamais atteindre l'application ASP.NET. La raison pour laquelle votre premier exemple fonctionne est que IIS reconnaît l'extension .ASPX et la transfère à ASP.NET.

0

Ajoutez un mappage générique à IIS pour exécuter toutes les requêtes via ASP.net, puis vous pouvez utiliser Global.asax pour gérer l'erreur.

Taken from here:

Suivez ces étapes pour créer une carte de script générique avec IIS 6.0:

  • clic droit sur un site Web et sélectionnez Propriétés
  • Sélectionnez l'onglet Répertoire
  • Cliquez sur le bouton Configuration
  • Sélectionnez l'onglet Mappages
  • Cliquez sur le bouton Insérer (voir Figure 4)
  • Coller le chemin du aspnet_isapi.dll dans le champ Executable (vous pouvez copier ce chemin de la carte de script pour les fichiers .aspx)
  • Décochez la case Vérifier que fichier existe
  • Cliquez sur le bouton OK
Questions connexes