Dans ASP.NET, existe-t-il un moyen de résoudre de manière programmatique le chemin d'accès à un HttpHandler chargé tel qu'il est défini dans le Web.config ? (c'est-à-dire SomeModule.axd) ?
Réponses
Trop de publicités?Si je comprends bien la question, vous voulez récupérer le chemin à partir de web.config, n'est-ce pas ?
Si c'est le cas, ce que vous recherchez est probablement quelque chose comme ceci :
string p = null;
System.Web.Configuration.HttpHandlersSection httpHandlersSection =
(System.Web.Configuration.HttpHandlersSection)
System.Configuration.ConfigurationManager.GetSection("system.web/httpHandlers");
foreach (System.Web.Configuration.HttpHandlerAction handler in httpHandlersSection.Handlers)
{
if(handler.Type == "myType")
{
p = handler.Path;
break;
}
}
L'astuce ici est l'instruction if. Les gestionnaires dans web.config n'ont pas de "noms" sympathiques que vous pouvez utiliser comme clé. Ils n'ont que des types (qui peuvent être d'affreuses chaînes de caractères), des chemins et le verbe. Pour localiser le gestionnaire spécifique qui vous intéresse, vous devrez peut-être rechercher dans le type ou le chemin du gestionnaire une sous-chaîne connue qui identifie le gestionnaire spécifique que vous souhaitez trouver.
Si vous êtes intéressé par le chemin d'accès au gestionnaire traitant la demande actuelle :
string path = HttpContext.Current.Handler.GetType().Assembly.CodeBase;
Si vous savez où trouver une collection d'autres instances de gestionnaires, vous pouvez utiliser la même approche pour obtenir leurs chemins.