Lors de l'accès à une page asp, il affiche l'erreur d'objet de réponse ASP 0156 : 80004005 Erreur d'en-tête HTTP ?, la ligne 0 a généré l'en-tête HTTP vers le navigateur client. Toute modification des en-têtes HTTP doit être effectuée avant de publier le contenu de la page. En fait, ce genre de problème est dû à des problèmes de mise en cache. Vous pouvez vous référer aux méthodes suivantes pour le résoudre :
Certaines pages ASP auront une erreur d'objet de réponse « ASP 0156 : 80004005 » et une erreur d'en-tête HTTP lors de leur première ouverture, mais elles redeviennent normales après l'actualisation. La solution est la suivante.
Copiez le code comme suit :
Réponse.Buffer = True
"Ça devrait être cette ligne, ce sera ok si vous la supprimez
"Si ça ne marche toujours pas,
Réponse.Buffer = True
Réponse.ExpiresAbsolute = Maintenant() - 1
Réponse.Expire = 0
Response.CacheControl = pas de cache
Response.AddHeader Pragma, sans cache
'Supprimez-les tous. Ceci est utilisé pour ne pas mettre la page en cache. Sa suppression ne devrait pas affecter le site Web.
Cette erreur se produit car le serveur Web utilise un en-tête HTTP pour configurer le navigateur client. Le serveur Web tente ensuite de réinitialiser le navigateur du client en utilisant des en-têtes HTTP supplémentaires (par exemple, lorsqu'un en-tête HTTP est émis après que le navigateur ait défini content-type = text/html). Un exemple est le traitement d'une page ASP avant d'inclure une balise HTML ou toute autre instruction Response.Redirect de script côté serveur.
Remarque Cela peut également se produire si vous mettez à niveau un ordinateur exécutant Microsoft Windows NT 4.0 vers Microsoft Windows Server 2003.
Un exemple est le traitement d'une page ASP avant d'inclure une balise HTML ou toute autre instruction Response.Redirect de script côté serveur.
Les propriétés et méthodes suivantes d'ASP pour l'objet Response écrivent les en-têtes HTTP :
Réponse.AddHeader
Réponse.CacheControl
Réponse.CharSet
Réponse.ContentType
Réponse.Expire
Réponse.ExpiresAbsolute
Réponse.Redirection
Réponse.Status
Retour en haut
solution
Pour résoudre ce problème, définissez les en-têtes HTTP, tels qu'une instruction de redirection ou des informations sur les cookies, avant d'envoyer la sortie HTML.
Par exemple, pour éviter cette erreur avec une redirection, limitez le traitement du tampon ou de la page ASP, puis émettez la redirection après le traitement. Il existe deux manières d'effectuer la mise en mémoire tampon : au niveau de la page ou au niveau de l'application.
Notez que tous les scripts ASP sont émis après la redirection. Si la page ASP est redirigée avant d'être émise vers un script ASP, le code ASP n'est pas traité.
Lorsqu'elles sont traitées au niveau de l'application, toutes les pages ASP de l'application Web sont mises en mémoire tampon. Pour définir la mise en mémoire tampon au niveau d'une application, procédez comme suit : 1. Dans Microsoft Management Console (MMC), recherchez le site Web sur lequel réside l'application Web.
2. Cliquez pour développer le site Web afin d'afficher le répertoire virtuel et l'application Web.
3. Cliquez avec le bouton droit sur l'application Web, puis cliquez sur Propriétés.
4. Sous l'onglet Répertoire virtuel, cliquez sur Configurer.
Notez que si le bouton Configurer n'est pas disponible, le répertoire virtuel n'est pas une application Web. Cliquez sur Créer pour créer le répertoire virtuel de l'application Web.
5. Dans la boîte de dialogue ApplicationConfiguration@@, sous l'onglet Options de l'application, cliquez sur Activer la mise en mémoire tampon.
Pour définir le niveau de page pour la mise en mémoire tampon, ajoutez du code après la ligne @LANGUAGE sur la page ASP, comme indiqué ci-dessous :
<% @LANGUAGE = VBScript %><% Response.Buffer = True %>Autres scripts ASP/Clientside ou HTML ...<% Response.Redirect %>Comme le montre le code suivant, les cookies peuvent également être définis au niveau de la page, mise en mémoire tampon. Cet extrait de code écrit le cookie avant d'envoyer la balise <HTML> (élément).
Réponse.Cookies(Nom)=valeur<HTML>...contenu...</HTML>
Si vous utilisez un petit tourbillon, il lui manque des composants.