Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

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

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
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.
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.PageDim 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 .
ViewState

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 316920 – Letzte Überarbeitung: 04/19/2007 01:51:46 – Revision: 3.2

Microsoft ASP.NET 1.0

  • kbmt kbprb kbstate kbwebforms KB316920 KbMtde
Feedback