Visiblement, c'est ton ascx et pas ton codebehind qui est en cause. D'après ta pile d'erreur, tu as déclaré un header html dans ton contrôle, et le parser ASP.Net refuse de le créer car tu en as déjà un.
Dis toi que ton contrôle est voué à être inséré dans container, lui même dans un panneau, dans un thème graphique, dans un placeholder de la page Default.aspx.
Le header, le body, et le formulaire prinicipal sont tous trois gérés dans l'unique page Default.aspx.
Si tu souhaite personnaliser le header, tu peux au choix utiliser le paramétrage dnn en ligne prévu à cet effet, ou bien si ça ne te suffit pas accéder programmatiquement au contrôle correspondant en passant par la page parente (Me.Page.Header...) pour y insérer tes élements.
Tu peux encore utiliser certaines fonctions spécifiques comme pour l'ajout de css via la fonction de la page default, encore que sur ce point, tu peux déjà placer une module.css à la racine de ton module qui sera automatiquement insérée.