Beim Zugriff auf eine ASP-Seite wird die Meldung „Antwortobjektfehler ASP 0156: 80004005 HTTP-Header-Fehler?“ angezeigt. Zeile 0 hat den HTTP-Header an den Client-Browser ausgegeben. Eventuelle Änderungen an HTTP-Headern müssen vor der Ausgabe des Seiteninhalts vorgenommen werden. Tatsächlich ist diese Art von Problem auf Caching-Probleme zurückzuführen. Zur Lösung können Sie auf die folgenden Methoden zurückgreifen:
Einige ASP-Seiten weisen beim ersten Öffnen einen Antwortobjektfehler „ASP 0156: 80004005“ und einen HTTP-Headerfehler auf, nach dem Aktualisieren sind sie jedoch wieder normal. Die Lösung ist wie folgt
Kopieren Sie den Codecode wie folgt:
Response.Buffer = True
„Es sollte diese Zeile sein, es ist in Ordnung, wenn Sie sie entfernen.“
„Wenn es immer noch nicht funktioniert, einfach
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = kein Cache
Response.AddHeader Pragma, kein Cache
„Alle entfernen.“ Dies wird verwendet, um die Seite nicht zwischenzuspeichern.
Dieser Fehler tritt auf, weil der Webserver einen HTTP-Header zum Einrichten des Client-Browsers verwendet. Der Webserver versucht dann, den Browser des Clients zurückzusetzen, indem er zusätzliche HTTP-Header verwendet (z. B. wenn ein HTTP-Header ausgegeben wird, nachdem der Browser content-type = text/html festgelegt hat). Ein Beispiel ist die Verarbeitung einer ASP-Seite vor dem Einfügen eines HTML-Tags oder einer anderen serverseitigen Skript-Response.Redirect-Anweisung.
Hinweis: Dies kann auch auftreten, wenn Sie einen Computer, auf dem Microsoft Windows NT 4.0 ausgeführt wird, auf Microsoft Windows Server 2003 aktualisieren.
Ein Beispiel ist die Verarbeitung einer ASP-Seite vor dem Einfügen eines HTML-Tags oder einer anderen serverseitigen Skript-Response.Redirect-Anweisung.
Die folgenden Eigenschaften und Methoden von ASP für das Response-Objekt schreiben HTTP-Header:
Response.AddHeader
Response.CacheControl
Response.CharSet
Response.ContentType
Antwort. Läuft ab
Response.ExpiresAbsolute
Antwort.Umleitung
Antwortstatus
Zurück nach oben
Lösung
Um dieses Problem zu beheben, legen Sie vor dem Senden der HTML-Ausgabe HTTP-Header fest, z. B. eine Redirect-Anweisung oder Cookie-Informationen.
Um diesen Fehler beispielsweise bei einer Umleitung zu vermeiden, begrenzen Sie die Verarbeitung des Puffers oder der ASP-Seite und geben Sie die Umleitung dann nach der Verarbeitung aus. Es gibt zwei Möglichkeiten, die Pufferung durchzuführen: auf Seitenebene oder auf Anwendungsebene.
Beachten Sie, dass alle ASP-Skripte nach der Umleitung ausgegeben werden. Wenn die ASP-Seite umgeleitet wird, bevor sie an ein ASP-Skript ausgegeben wird, wird der ASP-Code nicht verarbeitet.
Bei der Verarbeitung auf Anwendungsebene werden alle ASP-Seiten in der Webanwendung gepuffert. Gehen Sie folgendermaßen vor, um die Pufferung auf Anwendungsebene festzulegen: 1. Suchen Sie in der Microsoft Management Console (MMC) die Website, auf der sich die Webanwendung befindet.
2. Klicken Sie, um die Website zu erweitern und das virtuelle Verzeichnis und die Webanwendung anzuzeigen.
3. Klicken Sie mit der rechten Maustaste auf die Webanwendung und klicken Sie dann auf Eigenschaften.
4. Klicken Sie auf der Registerkarte „Virtuelles Verzeichnis“ auf Konfigurieren.
Beachten Sie, dass es sich bei dem virtuellen Verzeichnis nicht um eine Webanwendung handelt, wenn die Schaltfläche „Konfigurieren“ nicht verfügbar ist. Klicken Sie auf Erstellen, um das virtuelle Verzeichnis für die Webanwendung zu erstellen.
5. Klicken Sie im Dialogfeld „ApplicationConfiguration@@“ auf der Registerkarte „App-Optionen“ auf Pufferung aktivieren.
Um die Seitenebene für die Pufferung festzulegen, fügen Sie Code nach der @LANGUAGE-Zeile auf der ASP-Seite hinzu, wie unten gezeigt:
<% @LANGUAGE = VBScript %><% Response.Buffer = True %>Andere ASP-/Client-seitige Skripte oder HTML ...<% Response.Redirect %>Wie der folgende Code zeigt, können Cookies auch auf Seitenebene gesetzt werden. Pufferung. Dieses Code-Snippet schreibt das Cookie, bevor es das <HTML>-Tag (Element) sendet.
Response.Cookies(Name)=value<HTML>...content...</HTML>
Wenn Sie einen kleinen Wirbelwind verwenden, fehlen ihm Komponenten.