Nous avons migré une application écrite en asp classique vers des sites Web Azure (partagés) et certaines pages indiquent simplement l'erreur "La page ne peut pas être affichée car une erreur de serveur interne s'est produite". sans aucun détail. Ces pages fonctionnent bien sous IIS 7 ou en utilisant IIS express. Mais jamais sur le site Azure, ils ne le font pas.
Comme suggéré dans d'autres publications, j'ai configuré les éléments suivants pour le site Web sur Azure:
1) Journalisation du serveur Web - ON
2) Messages d'erreur détaillés - ON
3) Web.config - le mode customErrors est désactivé.
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.0">
Néanmoins, les messages de journal ne fournissent pas plus de détails sur ce qui ne va pas et fournissent simplement les informations suivantes:
Informations d'erreur détaillées:
Module IsapiModule
Notification ExecuteRequestHandler
Handler ASPClassic
Code d'erreur 0x00000000
Toute aide est appréciée pour savoir comment déboguer les problèmes de pages asp classiques sur les sites Web Azure. Je vous remercie.
Votre problème est peut-être du côté du navigateur: assurez-vous que le paramètre IE pour "afficher les messages conviviaux" est désactivé
De même, côté serveur, vous devez avoir un paramètre permettant d'autoriser l'envoi de messages d'erreur au client (désolé, je n'ai accès qu'à la version IIS de ce paramètre ... je ne sais pas ce qu'il y a dans Azure):
Merci G. Stoynev! Cela a fonctionné après l'ajout de la page d'erreur personnalisée d'asp! J'ai utilisé le code du lien suivant pour créer une page d'erreur personnalisée
http://support.Microsoft.com/kb/224070
Le lien suivant a également également aidé http://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/
Maintenant, la section system.webServer de mon web.config se présente comme suit:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<httpErrors>
<remove statusCode="500" subStatusCode="100" />
<error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/errors.asp" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
Une chose (étrange) à essayer, qui a fonctionné pour moi:
Essayez de FTP sur votre site Web Azure et renommez votre web.config
en quelque chose de complètement différent.
J'ai renommé le mien en web.config2
- le message d'erreur Azure "The page cannot be displayed because an internal server error has occurred."
a disparu et mon application ASP.Net a repris vie.
À partir de là, j'ai recréé web.config à partir de zéro, en copiant des morceaux de ma version originale, pièce par pièce (pour voir la cause du problème)
Ouais, je sais ... c'est une suggestion stupide, mais Azure ne me donnait aucune indication sur la cause de l'erreur, même si la journalisation était activée, et cela me sauvait la santé mentale !!
Je l'ai résolu en activant le journal des applications sous Journalisation => Journal des diagnostics dans la configuration de l'application Web Azure.
Vous pouvez alors voir l'erreur dans le volet "Flux de journaux" et la corriger.
Dans mon cas, l'erreur correspond aux deux lignes suivantes du web.config
:
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
Je les ai enlevés et cela a encore fonctionné.
Si vous essayez de configurer votre site sur lequel vous n'avez pas accès à IIS, tel qu'une application Web Azure, vous pouvez configurer les paramètres Classic ASP dans Web.Config.
Sous
<system.webServer>
Vous pouvez placer un
<asp>
élément qui configure diverses choses avec le fonctionnement de Classic.
La propriété qui affectait mon site était
**appAllowDebugging="true"**
Bien que cette propriété fonctionne correctement lorsque vous développez avec Visual Studio et que vous avez un débogueur Just-In-Time installé, elle gâche le traitement des erreurs pour Classic Asp.
BTW, m'a pris pour toujours à comprendre ce que j'ai changé.