PRB: "View State ist ungültig" bei Verwendung von Server.Transfer

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 316920 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie HttpServerUtility.Transfer ("page name", true) verwenden, erhalten Sie folgende Fehlermeldung:
Der Anzeigestatus für diese Seite ist ungültig, da er möglicherweise beschädigt wurde

Ursache

Dieses Problem tritt auf, weil das EnableViewStateMac -Attribut des der <pages>-Element ist standardmäßig auf true festgelegt. Wenn dieses Attribut auf true festgelegt ist, führt ASP.NET eine Authentifizierungsüberprüfung Nachricht (MAC) für den Anzeigezustand der Seite Wenn die Seite vom Client zurückgesendet wird. Diese Überprüfung ermittelt, wenn der Ansichtszustand der Seite auf dem Client geändert wurde. Aus Sicherheitsgründen wird empfohlen, dass Sie dieses Attribut auf true festgelegt beibehalten.

Beim Aufrufen der Methode Server.Transfer und den zweiten Parameter auf true festlegen, werden die Abfragezeichenfolge und die Form Auflistungen beibehalten. Eines dem Formularfelder ist das ausgeblendete __VIEWSTATE-Formularfeld, das den Ansichtszustand für die Seite enthält. Die Nachrichtenauthentifizierung Ansicht Status überprüfen schlägt fehl, da die Authentifizierungsprüfung Nachricht nur jede Seite überprüft. Daher ist der Ansichtszustand der Seite, die Server.Transfer ruft nicht auf der Zielseite gültig.

Ansichtszustand Seite begrenzt ist und für die Seite nur gültig. Ansichtszustand sollte nicht über mehrere Seiten übertragen werden.

Lösung

Verwenden Sie eine der folgenden Methoden, um dieses Problem zu beheben.

Lösung 1

Übertragen Sie Werte zwischen Seiten Ihres Servers-Steuerelementwerte an die anderen Seiten übergeben. Weitere Informationen finden Sie auf der folgenden MSDN-Dokumentation:
Übergabe Webserversteuerelement Werte zwischen Seiten
http://msdn2.microsoft.com/en-us/library/6c3yckfw(vs.71).aspx
Dies müssen Sie öffentliche Eigenschaften für jede Eigenschaft eines Steuerelements erstellen, die Sie von der Zielseite zugreifen möchten.

Wenn Sie viele Steuerelemente haben und Sie die Eigenschaften dieser Steuerelemente von einer anderen Seite zugreifen möchten, können Sie diese Steuerelemente auch als öffentliche Variablen deklarieren. Beispiel:

Page1.aspx
Public Class Page1
    Public WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

    'Insert your code here.
End Class
				
Page2.aspx
            Dim sourcePage As Page1
            sourcePage = CType(Context.Handler, WebForm1)
            Response.Write(sourcePage.TextBox1.Text)
				

Auflösung 2

Übergeben Sie den zweiten Parameter (die false in der Standardeinstellung ist) nicht Wenn Sie Server.Transfer aufrufen. Zum Beispiel:
Server.Transfer("<page name>")
				
dieser Code sendet keine QueryString und Form Felder auf der Seite, die aufgerufen wird. Wenn keine Daten übertragen werden, kann ASP.NET nicht die Authentifizierungsprüfung Nachricht ausgeführt werden.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie eine ASPX-Seite mit dem Namen WebForm1.aspx, die Ausführung zu einer anderen Seite überträgt. Fügen Sie folgenden Code zu WebForm1.aspx:
    <%@ Page language="vb" AutoEventWireup="true" %>
    
    <html>  
      <body>	
        <form id="WebForm1" method="post" runat="server">
          <asp:TextBox id="txtName" runat="server">Your Name</asp:TextBox><br>
          <asp:Button id="Button1" runat="server" Text="Submit" OnClick="Button1_Click"></asp:Button>
        </form>	
      </body>
    </html>
    
    <script runat=server>
    Sub Button1_Click(sender As Object, e As System.EventArgs)
    	Server.Transfer("WebForm2.aspx",true)
    End Sub
    
    </script>
    					
  2. Erstellen Sie eine andere ASPX-Seite mit dem Namen WebForm2.aspx, und fügen Sie den folgenden Code hinzu:
    <%@ Page language="vb" AutoEventWireup="true" %>
    
    <html>
      <body>	
        <form id="WebForm2" method="post" runat="server">
          <asp:Label id="lblName" runat="server" >Web Form 2</asp:Label>
        </form>
    	
      </body>
    </html>
    
    <script runat=server>
    Sub Page_Load(sender As Object, e As EventArgs)
    
    Dim thisPage As System.Web.UI.Page
    Dim nameTextBox As TextBox
    
    	thisPage = CType(Context.Handler, System.Web.UI.Page)
    	nameTextBox =  CType(thisPage.FindControl("txtName"), System.Web.UI.Control)
    
    	lblName.Text = "Your name is '" & nameTextBox.Text & "'."	
    	
    End Sub
    
    </script>
    					
  3. Öffnen Sie WebForm1.aspx in Ihrem Browser, und klicken Sie dann auf Speichern .

Eigenschaften

Artikel-ID: 316920 - Geändert am: Donnerstag, 19. April 2007 - Version: 3.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.0
Keywords: 
kbmt kbprb kbstate kbwebforms KB316920 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: 316920
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.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com