avril 2008 - Messages

Inspiré de ce message, qui m'a rappellé que je n'avais pas parlé de ce problème qui m'était pourtant arrivé.

Il arrive que vous ayez besoin d'avoir une application web située sous un autre (répertoire virtuel).

Problème : votre application située virtuellement en dessous héritera automatiquement du web.config de l'application parente. Avec tous les problèmes qui en découlent : déclaration de paramètres en doublons (chaînes de connexions, appSettings, etc.), déclaration de types dont l'assembly n'est pas présente, etc.

Exemple (pompé sur l'autre message) :

<httpModules>

  <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>

  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

</httpModules>

Avec une telle déclaration dans votre site racine, toutes les applications descendantes se retrouveront avec les extensions ajax déclarées. (Peu importe la version du framework d'ailleurs)

Première solution trouvée : celle consistant à supprimer les anciennes déclarations à l'aide d'un <clear /> (là où c'est supporté).

<httpModules>

  <clear/>

</httpModules>

Sauf qu'il y a une autre solution, liée à cette fameuse balise <location /> que l'on utilise souvent pour spécifier des droits sur une page spécifique.

Il suffit en fait d'utiliser l'attribut inheritInChildApplications="false" sur une balise location avec path="." dans votre web.config racine pour pouvoir ainsi y insérer des éléments de configuration qui ne seront pas hérités par les applications descendantes.

<location path="." inheritInChildApplications="false">

  <system.web>
    <httpModules>

      ...

    </httpModules>

  </system.web>
</location>

Ainsi, si vous avez des sections dont vous ne souhaitez surtout pas que les applications descendantes héritent (par prévention), il vous suffit de les déclarer dans cette section.

Vu sur le blog de Brad Adams, un nouvel outil dans une première version beta nommé "Framework Design Studio" (publié sur le tout frais MSDN Code Gallery) qui permet de faire un peu d'introspection sur les librairies afin les analyser et les comparer.

Il permet de les analyser avec la possibilité de lister les API exposées, de les commenter (et même, via plugin, sauver ces commentaires en tant que dans une base de bugs) et d'exporter ces commentaires sur word.

Autre fonctionalité intéressante, celle de pouvoir comparer 2 versions d'une assembly et voir quelles ont été les méthodes ajoutées/supprimées/modifiées.

Un bon complément pour détecter les "breaking changes" dans des librairies critiques et faire de la revue d'architecture.

Je vous renvoie vers les messages originaux pour des petites captures d'écrans.