Je vous recommande de ne pas utiliser la méthode web.config. customErrors redirige vers la page d'erreur, ce qui n'a pas de sens. Essentiellement, il dit d'abord "oh oui, cela fonctionnera parfaitement, vous devez juste aller ici à la place", et puis dit "oh, nous n'avons pas trouvé cela". C'est vraiment un bug (s'il n'y a rien ici, alors pourquoi le serveur m'a-t-il dit d'aller ici, clairement au code de l'utilisateur il a l'air de vous le code du serveur foiré, ils sont allés au bon URI et ensuite vous les avez dirigés au mauvais).
Utilisez Server.Transfer() de global.asax, définissez un HTTPHandler par défaut ou définissez IIS pour exécuter (pas de redirection vers) votre fichier .aspx ou autre avec votre implémentation. Si vous voulez que le même gestionnaire gère chaque erreur, vous pouvez, par exemple, faire un Server.Transfer() à partir de global.asax, mais inclure un paramètre de chaîne de requête sur le type d'erreur (simplement un code d'état HTTP, ou quelque chose de plus détaillé), ou transmettre des informations dans le HttpContext.