Bonjour,
En fait global.asax est executé au démarrage de l'application (de l'instance dotnetnuke donc) et pas d'un portail spécifique.
On pourrait se baser sur l'url pour retrouver le portalalias puis le portalid mais pour moi ce n'est pas la bonne façon de faire.
Je trouve étrange de créer/supprimer des roles à chaque démarrage/redémarrage de l'application puisque du coup des utilisateurs vont perdre des droits (ou il faudra les reassigner à chaque fois).
Si c'est pour créer des roles uniquement s'ils existent pas, autant le faire un fois pour toute.
Si c'est pour synchroniser des roles par rapport à une autre base par exemple, soit il faut créer une tache planifiée qui va toutes les x min vérifier l'existance des roles et les créer si besoin, soit utiliser un module http qui sera executé à chaque requete (attention peut etre couteux en perf), soit enfin utiliser un module sur la home qui créera les roles à la connexion de l'utilisateur par exemple.
Jean-Baptiste