Update: Beim Response.ClearHeaders Method in einem benutzerdefinierten HTTPmodule aufrufen, werden zusätzliche Zeichen in der Ausgabe angehängt

Artikel-ID: 812686 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie die Response.ClearHeaders -Methode in einem benutzerdefinierten HTTPModule, die PreSendRequestHeaders registriert ist aufrufen, werden zusätzliche Zeichen zurückgegeben. Dieses Problem tritt nur auf der ersten Anforderung oder die erste Zeit, die Sie dieser Aufruf nach dem Kompilieren der Anwendung vornehmen.

Ursache

Der Compiler versucht, eine Batch-Kompilierung führen und akzeptiert einen anderen Code-Pfad in der Response.Flush -Methode, für die erste Anforderung einer Seite. Später im Code Wenn Sie zum Hinzufügen von Chunkprefix und Chunksuffix Zeichen versuchen angezeigt werden Sie als zusätzliche Zeichen in der Ausgabe.

Lösung

Wie Sie das Update erhalten

Dieses Problem wurde im Juni 2003 behoben ASP.NET Hotfix Package 1.1. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
821156INFO: Rollup Package für ASP.NET 1.1-Hotfix vom Juni 2003
Dieses Update kann nicht einzeln abgerufen werden. Sie müssen das Rollup installieren.

Hinweis: Wenn Sie diesen Hotfix anfordern, erhalten Sie das Rollup.

Die englische Version dieses Hotfixes weist die in der nachstehenden Tabelle aufgelisteten Dateiattribute (oder höher) auf. Die Datums- und Uhrzeitangaben für diese Dateien werden in Coordinated Universal Time () angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu ermitteln verwenden Sie die Registerkarte Zeitzone des Tools ? Datum und Uhrzeit in der Systemsteuerung.
	           Date         Time   Version       Size       File name
		   -----------------------------------------------------------------------
		   07-Jun-2003  00:44  1.1.4322.910    253,952  Aspnet_isapi.dll
		   07-Jun-2003  00:44  1.1.4322.910     20,480  Aspnet_regiis.exe
		   07-Jun-2003  00:44  1.1.4322.910     32,768  Aspnet_wp.exe
		   15-May-2003  23:49                   33,522  Installpersistsqlstate.sql
		   15-May-2003  23:49                   34,150  Installsqlstate.sql
		   07-Jun-2003  12:52  1.1.4322.910  1,216,512  System.dll
		   07-Jun-2003  00:39                   14,472  Webuivalidation.js
		   07-Jun-2003  12:52  1.1.4322.910  1,249,280  System.Web.dll

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Speichern Sie den folgenden Code unter Stripheader.cs und kompilieren Sie diese Anwendung Test.dll :
    using System.Web ;
    using System;
    using System.IO;
    
    namespace failed
    {
    	/// <summary>
    	/// Summary description for the stripheader.
    	/// </summary>
    	public class stripheader: IHttpModule 
    	{
    		private MyEventHandler _eventHandler = null;
    
    		public stripheader()
    		{
    			//
    			// TODO: Add constructor logic here.
    			//
    		}
    		public void Init (HttpApplication app)
    		{
    			app.PreSendRequestHeaders  += new EventHandler (onPreSend);
    		}
    
    		public void Dispose(){}
    		public delegate void MyEventHandler(Object s, EventArgs e);
    		public event MyEventHandler MyEvent
    		{
    			add { _eventHandler += value; }
    			remove { _eventHandler -= value; }
    		}
    
    		public void onPreSend(Object s, EventArgs e)
    		{
    			HttpApplication app = s as HttpApplication;
    			app.Context.Response.ClearHeaders();
    
    			if(_eventHandler!=null)
    				_eventHandler(this, null);
    		}
    	}
    	
    }
  2. Verwenden Sie folgenden Code zum Erstellen einer Seite Test.aspx:
    <%@ Page %>
    <%
    Response.Write ("Hello World");
    %>
  3. Fügen Sie eine standardmäßige Web.config -Datei und dann hinzu im folgenden Abschnitt nur vor dem Ende </system.web>-Tag:
      <httpModules>
             <add name="failed" type="failed.stripheader, test" />
      </httpModules>
  4. Kopieren der Dateien, die Sie in die Schritte 1, 2 und 3 in einem virtuellen Verzeichnis (Vdir) erstellt haben. Erstellen Sie einen Bin-Ordner in diesem virtuellen Verzeichnis, und kopieren Sie die Test.DLL-Datei in den Ordner Bin.
  5. Zeigen Sie die Seite Test.aspx in Ihrem Browser.

    Die Ausgabe erwarteten Text ist "Hello World". Allerdings ist das Ergebnis "Hello World 0 b".
Nachdem die Seite einmal kompiliert wurde, gibt die richtige Ausgabe für alle späteren Anforderungen zurück. Zum Reproduzieren des Verhaltens erneut, ändern Sie die Web.config-Datei, speichern Sie die Datei erneut und zeigen Sie die Seite Test.aspx erneut.

Eigenschaften

Artikel-ID: 812686 - Geändert am: Dienstag, 27. September 2005 - Version: 2.5
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft ASP.NET 1.1
Keywords: 
kbmt kbhotfixserver kbqfe kbhttpmodule kbnetframe100presp3fix kbfix kbqfe kbbug KB812686 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 812686
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns