2010-03-24 8 views
2

Je sais que si je veux avoir des demandes de MyPage.aspx aller à la classe appelée MyHandler dans l'assemblée appelée MyAssembly, je peux ajouter à mon fichier web.config:Comment exclure les éléments correspondant au chemin spécifié pour un HttpHandler dans ASP.Net?

<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="*" path="MyPage.aspx" type="MyHandler, MyAssembly"/> 
    </system.web> 
</configuration> 

Cela fonctionne pour tout MaPage .aspx au (composé) URL: www.mycoolsite.com/MyProject/[SomePathHere]/MyPage.aspx

si je veux le faire pour chaque MyPage.aspx sauf www.mycoolsite.com/ MyProject/NoHandler/MyPage.aspx

Existe-t-il un moyen d'exclure ce chemin du gestionnaire?

Répondre

6

Vous pouvez placer un fichier web.config dans le dossier NoHandler qui définit un gestionnaire différent (NotFound si vous voulez server un style 404, etc.). Même format que votre web.config actuel, mettez juste les éléments que vous voulez remplacer comme le gestionnaire.

Voici un exemple, si vous voulez remplacer un 404 dans ce répertoire:

<configuration> 
<system.web> 
    <httpHandlers> 
    <remove verb="*" path="MyPage.aspx" type="MyHandler, MyAssembly"/> 
    <add verb="*" path="MyPage.aspx" type="MySpecialHandler, MyAssembly"/> 
    </httpHandlers> 
</system.web> 
</configuration> 
+0

Si quelque chose correspond à deux voies ce qui détermine la priorité? Je veux dire, ai-je la garantie que 'gagnerait sur ' –

+0

@Tim - Mise à jour de la réponse avec un exemple, il y a aussi une option de suppression que vous pouvez utiliser pour votre cas :) –

+0

Merci pour l'aide, Nick. Cette solution a fonctionné pour moi, sauf que j'ai dû sortir le "type" de la suppression ... sinon il me donnait une erreur. –